我正面临着一些您已经讨论过的问题,并且很抱歉再次提出这个问题。多对多(自引用问题)vs双人一对多
这就像我还没有得到hibernate
的某些方面。我正在使用maven2
,hibernate 3.2.5 ga
,spring 2.6.5 SEC01
,hsqldb 1.8.0.10
,netbeans 6.7.1
。
我正在建立用户和联系人管理,并且我设法在我的环境中与“联系人”和“群组pojo”建立了工作“多对多”关系,但是没有登录到hsql
或mysql 5.0.51
一个本地测试服务器。因为我不想尝试双重一对多关联,所以我想通过引入中间模型来询问关于该映射的几件事情。
现在,这里是我的映射(我已经张贴只是要避免长岗)
//UserAccount POJO
@OneToMany(targetEntity=PhoneImpl.class, cascade= {CascadeType.ALL})
@org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<Phone> phones = new HashSet<Phone>();
@OneToMany(targetEntity=ContactImpl.class, cascade={CascadeType.ALL}, mappedBy="userAccount")
@org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<Contact> contacts = new HashSet<Contact>();
@OneToMany(targetEntity=GroupImpl.class, cascade={CascadeType.ALL}, mappedBy="userAccount")
@org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<Group> groups = new HashSet<Group>();
//Contact POJO
@ManyToOne(targetEntity=UserAccountImpl.class)
@JoinColumn(name="USER_ACCOUNT_ID",nullable=false)
private UserAccount userAccount;
@OneToMany(targetEntity=PhoneImpl.class, cascade={CascadeType.ALL})
private Set<Phone> phones = new HashSet<Phone>();
@ManyToMany(targetEntity=GroupImpl.class, mappedBy="contacts")
private Set<Group> groups=new HashSet<Group>();
//Group POJO
@ManyToOne(targetEntity=UserAccountImpl.class)
@JoinColumn(name="USER_ACCOUNT_ID",nullable=false)
private UserAccount userAccount;
@ManyToMany(targetEntity=ContactImpl.class,cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name="GROUP_CONTACT_MAP", joinColumns={@JoinColumn(name="GROUP_ID")},
inverseJoinColumns={@JoinColumn(name="CONTACT_ID")})
private Set<Contact> contacts = new HashSet<Contact>();
所以这个工作正常在我的机器上HSQLDB和我的本地MySQL但是它不是本地相同这里使用相同的MySQL 5.0.SO测试服务器是我的问题:
在本地测试服务器上有一个自引用外键作为group.I've了解循环引用到联系很好,但真的不知道这里是否属于这种情况。在映射中可以找到任何可能产生的东西这种自我引用外键。或者我没有避免循环引用的东西?
2.我正在使用Manning java持久化与hibernate这是一本很好的书,从那里我开始练习使用hibernate.in这本书是一个双重的一对多关联让我们说我的情况与中介模式之间的联系与团体之间。我只是不知道如何在实践中使用它,因为我想切换到这种方法。
2.1所以我主要担心的是如何获取所有在一个组中的联系人和联系人所在的所有组?我看不清楚。
2.2如果采用这种方法,联系人和组之间的互相引用将如何?会互相忽视吗?也许这些都是基本的体验,像你这样的java代码编写人员,所以请原谅我的无知,如果你能对此有所了解,我会非常高兴。
感谢您的阅读!
编辑了这篇文章。如果你们中的一些人无法理解,感谢那些试图编辑它的人。现在我认为它更清晰,所以现在我会等待你的想法 – 2009-11-18 08:32:23