我在我的一个entites中有一个单向映射的@Onetomany关系。假设这样的事情(不完整 - 只是为了想法):
@Entity
public class Contract {
@OneToMany
@JoinColumn(name="...", referencedColumnName="...")
Product product;
现在,作为第一步,我从后端加载了所有产品,然后我从其他界面加载所有合同。后一个界面仅超过了产品的技术键。目前,我加载了所有产品,将它们作为钥匙和对象放在地图中,然后在加载时将它们放入新合同中。真的要走了吗?我尝试了一段时间,将产品等于技术密钥,并希望JPA在合同实体合并时可以解决问题 - 但这并不成功。
欢迎任何提示。预先感谢
正如我从您的示例中了解的那样,您有一个合同实体,它引用了几个产品实体,并且您想知道如何在JPA-Java中反映这一点。如果是这样,那么您只需要将产品添加到合同的产品列表中即可。请记住,JPA将表转换为对象,因此任何关系都将采用班级成员的形式。如果关系是多个的,则类成员将是一个集合(例如,列表)。然后,您可以:
- 创建新的产品集合,添加产品,然后将合同的产品收藏在此新系列中,如果合同没有产品,则是一种很好的方法:
List<Products> listProducts = new ArrayList<Products>();
//add the products
contract.setProductList(listProducts);
- 回复合同产品的收集,然后添加所需的产品,如果合同具有以前的产品:
contract.getProductList().add(product);
无论如何,您都需要进行更改。请记住,在这种情况下,您需要将父母实体持续存在。