假设我有一个如下所示的 JPA 实体,为简单起见,省略了完整的注释详细信息
@Entity
public class Order {
@Id Integer id;
@OneToMany List<Parts> parts;
}
@Entity
public class Part {
@Id Integer id;
@ManyToOne Order order;
}
假设我正在向现有订单添加新零件
Order order = entityManager.find(Order.class,1);
Part newPart = new Part();
newPart.setOrder(order);
order.getParts().add(part);
// set other part fields
Integer newPartId = newPart.getId(); // newPartId is null
有没有一种方法可以获取新添加项目的 id,而无需在实体管理器上显式调用 persist()
或等到当前 tx 提交之后?
最佳答案
按照 Andrei 的回答所述修复映射后,保留您的实体,然后在 EntityManager 上调用 flush()
,然后从实体获取 ID。
Hibernate 不会为它甚至不知道的非持久实体生成 ID。
关于java - 如何在 tx 提交之前获取添加到 JPA 关系的新实体的主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199490/