Java 读取休眠实体标识值
Hibernate是否有用于读取实体标识字段值的API?在我的例子中,这将是用Java 读取休眠实体标识值,java,hibernate,Java,Hibernate,Hibernate是否有用于读取实体标识字段值的API?在我的例子中,这将是用@Id注释的字段返回的可序列化的值。例如,假设我有一个人实体: class Person { @Id private long id; // ... other fields, getters/setters, etc ... } Person p = new Person(); p.setId(42L); Hibernate.unknownFunction(p); // returns 42L
@Id
注释的字段返回的可序列化的
值。例如,假设我有一个人
实体:
class Person {
@Id private long id;
// ... other fields, getters/setters, etc ...
}
Person p = new Person();
p.setId(42L);
Hibernate.unknownFunction(p); // returns 42L
当然,我可以自己阅读注释来找到
@Id
字段,但这似乎是内置的。我不能说100%不-但我真的很怀疑,因为并非所有实体都用@Id
注释;还可以使用其他变体,例如@EmbeddedId
。有鉴于此,难道不能使用反射来获取id值吗?如果需要在任意类中返回id的方法,请设计一个接口来满足这一点。例如:
public interface IdHolder {
Integer getId();
}
有了这样的接口,您可以使用一些实用方法从任意类检索id
这是一种稳健但有点棘手的方法。
返回与此会话关联的给定实体的标识符值。如果给定的实体实例是暂时的或与此会话分离,则会引发异常
该对象需要有一个ID,并与当前会话相关联,否则会引发异常。但我认为这是合乎逻辑的