多对多(自我引用问题)与双对一对多

时间:2009-11-18 00:20:49

标签: java hibernate spring java-ee

我正面临一些你已经谈过的问题,很遗憾再次提出这个问题。

就像我仍然没有得到hibernate的某些方面。我正在使用maven2hibernate 3.2.5 gaspring 2.6.5 SEC01hsqldb 1.8.0.10netbeans 6.7.1

我正在建立一个用户和联系人管理,我已经设法在我的环境中使用hsql或{在{contact“和”group pojo“之间建立了一个”多对多“关系。 {1}}但不在本地测试服务器上。因为我想尝试双重一对多关联,所以我想问一下引入中间模型的映射。

现在这里是我的映射(我已经发布了避免长篇文章的必要内容)

mysql 5.0.51

所以这在我的机器上使用hsqldb和我的本地mysql工作正常但是对于使用相同mysql 5.0的本地测试服务器来说它是不一样的。这里是我的问题:

在本地测试服务器上有

1。,有一个自引用联系人和组的外键。我读过有关循环引用的内容,但无法确定是否属于这种情况。在映射中是否有任何可以生成这种自引用外键的东西。或者我没有避免使用循环引用的东西?

2。我正在使用manning java persistence with hibernate这是一本很棒的书,我开始练习使用hibernate.in这本书是一个双重的一对多关联让我们在我的情况下说联系和组与中间模型。我只是不知道如何在实践中使用它,因为我想切换到那种方法。

2.1 所以我主要担心的是如何获取群组中的所有联系人以及联系人所在的所有群组?我只是看不清楚。

2.2 如果采用这种方式,联系人和群组将如何相互引用?会忽略对方吗? 也许这些是像你这样体验java编码器的基本内容所以请原谅我的无知,如果你能对此有所了解,我将非常高兴。

感谢阅读!

1 个答案:

答案 0 :(得分:1)

一些想法:

0:你确定你在使用hsqldb和mysql之间改变了hibernate方言吗?

1:我认为如果你有一个无法解析的/循环引用

,你可能会遇到异常

2. **:您将创建一个名为ContactToGroup的新类,它将有一个contact字段和一个group字段,每个字段都是一个结尾多对一的。 ContactGroup类都有一组contactToGroup。您可以像下面这样查询:

from Contact c 
left join fetch c.contactToGroupSet joinTable 
left join fetch joinTable.Group

这将通过ContactToGroup对象为您提供所有联系人及其附件组。

一起创建Contact,ContactToGroup和Group对象也可以写入这些表。

祝你好运!