我有一个@GeneratedValue()实体。我知道有不同的代类型。我的问题是:当我创建实体的新实例时,是否有一代生成ID?我需要我的对象的id创建另一个对象,其ID为FK,但我不想在创建其他对象之前坚持对象。感谢帮助!@GeneratedValue当创建一个新的实例
1
A
回答
0
可以调用store()
方法。 Store方法不会将对象保存在数据库中。它在hibernate缓存层创建一个代理对象,并返回代理对象,并填充主键(是的,自动生成的值可用)。你可以使用这个值作为你想要的其他对象。完成之后,刷新会话时,所有对象都会保留在数据库中。
0
您不必担心获取生成的ID。只需在Java端设置对象关系(使用setter方法),并在persist()
上JPA将确保将生成的PK设置为依赖对象上的FK。
给你举个例子,如果你有以下的实体类
@Entity
public class PKClass {
@Id @GeneratedValue
@Column(name = "PK_ID")
private Long id;
// getters/setters
}
@Entity
public class FKClass {
@Id @GeneratedValue
@Column(name = "FK_ID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "PK_ID")
private PKClass pk;
// getters/setters
}
你会坚持他们(而不用担心主键)作为
// create a new transaction
EntityTransaction tx = em.getTransaction();
tx.begin();
// setup Java relationships
PKClass pk = new PKClass();
FKClass fk = new FKClass();
fk.setPK(pk);
// persist
em.persist(fk);
// close transaction
tx.commit();
相关问题
- 1. 创建一个新的类实例
- 2. CRM创建一个CrmConnection的新实例
- 3. 创建一个新的weka实例
- 4. ExecutorService - 在方法中创建新实例vs每个类创建一个实例
- 5. 如何创建当前实例的新实例?
- 6. C#创建一个实例
- 7. 创建一个MXML实例
- 8. 创建KClass的新实例
- 9. 创建每个实例的新文件
- 10. 在scala中动态创建一个案例类的新实例
- 11. 创建一个没有“新”操作符的类的新实例
- 12. Java中,一个类的多个实例重置最新创建的实例
- 13. 创建一个Django模型实例并创建另一个Django模型实例
- 14. 可以使用一个已经创建的实例创建一组实例吗?
- 15. SQLAlchemy - 在另一个实例中创建一个实例__init__
- 16. 创建一个类的唯一实例,当有几个实现时
- 17. 创建同一类型的新实例作为另一个intsance
- 18. Java:创建新实例
- 19. 重新创建实例
- 20. 创建一个对象的新实例,或修改现有的实例?
- 21. startService()是否创建一个新的Service实例或使用现有的实例?
- 22. 创建另一个类的实例
- 23. 创建一个System.Drawing.Graphics的实例
- 24. 创建一个类的静态实例
- 25. 创建一个UIView的实例 - iOS
- 26. 创建一个RHEL实例的iso
- 27. 如何创建一个类的实例?
- 28. 创建一个经理类的实例
- 29. 创建一个类的实例
- 30. 创建一个CalendarView的实例
多数民众赞成我需要,谢谢。 – kai
这是'Hibernate'特有的,不会让你将应用程序移植到不同的ORM上,这就是为什么通常首先使用JPA的原因。 –