假设我在两个实体类Person和Address之间存在双向@many_to_Many关系。
在我的例子中,填充表Person和Address时,不会填充关联表Person_Address。如果我在Person和Address表中已经有一些条目,那么我需要将关联记录添加到Person和Address中,如何在JPA和Hibernate中执行此操作?
Person
1 John
2 Mary
3 Kate
Address
1 The 2nd Street
2 The 3rd Street
现在我有一种方法可以在" John"之间添加关联。和#34;第二街",怎么做?
public void associate(Person person, Address address) {
log.info("Associating ..." );
entityManager.persist(???); // there is no explicit PersonAddress enitty
}
这是关联表的常见场景吗?
答案 0 :(得分:1)
如果不更新实体类,您无法在JPA中执行此操作,而不是JPA的工作方式。链接表用于支持实体,默认情况下不是实体本身,因此无法单独更新。
如果您需要更新链接表而不更新实体(说实话对我来说有点奇怪!),您可以下载到本机SQL:
Query q = entityManager.createNativeQuery("update ...");
q.executeUpdate()
然而,您最好的方法是允许JPA使用正确的级联属性集来管理此关系。然后它变成了一个简单的例子:
person.getAddresses().add(address);
address.getPeople().add(person);
entityManager.persist(person);
答案 1 :(得分:0)
我会尝试再创建一个映射到关联表的实体PersonAdress并将其保存在您的方法中。