gpt4 book ai didi

java - 如何在不更新实体类的情况下更新关联表

转载 作者:行者123 更新时间:2023-11-29 11:19:20 27 4
gpt4 key购买 nike

假设我在两个实体类 Person 和 Address 之间有双向 @many_to_Many 关系。

在我的例子中,当填充表 Person 和 Address 时,关联表 Person_Address 不会被填充。如果我在“人员”和“地址”表中已有一些条目,那么我需要将关联记录添加到“人员”和“地址”中,如何在 JPA 和 Hibernate 中执行此操作?

Person
1 John
2 Mary
3 Kate

Address
1 The 2nd Street
2 The 3rd Street

现在我有一个方法可以在“John”和“The 2nd Street”之间添加关联,该怎么做?

public void associate(Person person, Address address) {
log.info("Associating ..." );

entityManager.persist(???); // there is no explicit PersonAddress enitty
}

这是关联表的常见场景吗?

最佳答案

如果不更新实体类,您就无法在 JPA 中执行此操作,这不是 JPA 的工作方式。链接表用于支持实体,默认情况下本身不是实体,因此无法单独更新。

如果您需要更新链接表而不更新实体(说实话,这对我来说似乎有点奇怪!),您可以进入 native SQL:

Query q = entityManager.createNativeQuery("update ...");
q.executeUpdate()

但是,最好的方法是允许 JPA 使用正确的级联属性集来管理此关系。那么它就变成了一个简单的情况:

person.getAddresses().add(address);
address.getPeople().add(person);
entityManager.persist(person);

关于java - 如何在不更新实体类的情况下更新关联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39199920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com