Hibernate:如何强制Hibernate为集合设置类型?

4

我遇到了一个Hibernate问题,希望你能帮我解决 =)!

我的问题是:

我有一个包含两个表的数据库,Addressbook和Contact,这两个表之间的关系在我的场景中是1:n。

现在,经过反向工程,Hibernate在“AbstractAddressbook”类中生成了以下代码:

private Set contacts = new HashSet(0);

但我需要的是这个:
private Set<Contact> contacts = new HashSet<Contact>(0);

我该如何完成这个任务?我需要在哪里设置反向工程?

Hibernate(以及JPA)都是强类型的,您究竟想要实现什么?请发布一些实体代码和您期望的输出。您正在做的听起来可能很琐碎,但这并不足够信息。 - Daniel B. Chapman
我正在尝试将我的MySql数据库映射到Java类中,但唯一的问题是Hibernate无法正确匹配Set<Type>,正如您在上面所看到的那样。您需要哪种类型的代码部分? - James Carter
3个回答

6
在“Hibernate代码生成配置”中的导出器中选择“使用Java 5语法”。

2

1
感谢澄清(我已经删除了垃圾)。我没有使用过Hibernate反向工程,无法提供任何经验。我建议使用Eclipse JPA工具(eclipse.org)并从带有简单JDBC连接的新JPA项目中“生成实体”(有很多教程可用)。它可以很好地映射数据库并推断出正确的类型(您可能需要将Set更改为List或类似的小事情)。我4天前在一个相对复杂的数据库上运行了这个工具,效果不错。
除非您有奇怪的要求(例如它需要纯Hibernate XML配置之类的东西),否则JPA工具通常表现良好,并且它们是免费的。(附注:JBoss工具是Eclipse插件,应该也有Hibernate工具并可以生成xml映射)。

我觉得你误解了我的意思,我想使用Hibernate通过反向工程工具生成DAO和抽象类。在其中有一个名为“配置类型映射细节”的部分,我猜想我需要告诉Hibernate表的类型,因为到目前为止它只是创建了一个没有任何类型的集合。希望你明白我的意思。 - James Carter
我已经有了,我使用的是MyEclipse,它也使用JBoss工具(用于反向工程),并且它可以生成所有的抽象类、普通类、xml文件和DAO文件。唯一的问题是它不能映射Set(集合)类型...而我真的不知道在哪里设置它在“配置类型映射细节”中。 - James Carter
一个有点儿愚蠢的问题,但为什么不在生成后直接更改呢?你可以将Set<T>类型映射到JPA下。另外,您是使用JPA注释还是Hibernate XML? - Daniel B. Chapman
我不使用任何注释...我的代码完全由Hibernate生成(包括DAO类等),所以是的,我使用hibernate.cfg.xml。 - James Carter
我只能说,请发布配置和快速模式图,我会看一下。如果您无法自动生成代码,则似乎正确的解决方案是覆盖您的类并提供所需的方法。请注意,自动生成会带来很多问题。它似乎是个好主意,直到它咬了你。如果需要真实世界的示例,请搜索 .NET *.edmx 文件。我会使用工具生成类,然后保持其稳定性。 - Daniel B. Chapman
谢谢你的帮助!=)但我已经解决了。我没有使用Hibernate模板进行反向工程,因此Hibernate无法解析Set<>的类型。无论如何,还是感谢你的帮助!=)我会记住你的建议! - James Carter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接