Hibernate是否有用于读取实体身份字段值的API?在我的例子中,这将是用Serializable
注释的字段返回的@Id
值。例如,假设我有一个Person
实体:
class Person {
@Id private long id;
// ... other fields, getters/setters, etc ...
}
Person p = new Person();
p.setId(42L);
Hibernate.unknownFunction(p); // returns 42L
当然,我可以自己阅读注释以找到@Id
字段,但这似乎是内置的内容。
答案 0 :(得分:2)
好吧,如果你需要一个在任意类中返回id的方法,设计一个接口来满足这个要求。例如:
public interface IdHolder {
Integer getId();
}
使用这样的接口,您可以使用一些实用程序方法来从任意类中检索id。
cglib是一个强大但有点棘手的方法。
答案 1 :(得分:2)
返回与此会话关联的给定实体的标识符值。如果给定实体实例相对于此会话是临时的或分离的,则抛出异常。
对象需要具有ID,并与当前会话关联,否则抛出异常。但我认为这是合乎逻辑的。
答案 2 :(得分:0)
我不能说100%不 - 但我真的怀疑它,因为并非所有实体都注明了@Id
;可以使用其他变体,例如@EmbeddedId
。鉴于此,你不能只使用反射来获得你的id值吗?