我有一个未知的JPA实体,需要知道它的版本。我找不到一般的方法。
我尝试了元模型,但不知道该如何传递给getVersion()方法:
Object entity = ...;
Metamodel metamodel = entityManager.getMetamodel();
IdentifiableType<?> metaClass =
(IdentifiableType<?>)metamodel.managedType(entity.getClass());
metaClass.getVersion(<what to put here?>);
metaClass.getId()
中使用相同的模式,但是有一个补充方法getIdType()
-getVersionType()
丢失。其次,有
entityManagerFactory.getPersistenceUnitUtil().getIdentifier(entity)
方法,但没有getVersion(entity)
方法。有什么方法可以从未知实体获取版本?
最佳答案
只是比try / catch的答案干净一点:
public static SingularAttribute<?, ?> getVersionAttribute(ManagedType<?> managedType) {
if (!(managedType instanceof IdentifiableType<?>))
return null;
IdentifiableType<?> identifiableType = (IdentifiableType<?>)managedType;
if (!identifiableType.hasVersionAttribute())
return null;
for (SingularAttribute<?, ?> attribute : identifiableType.getSingularAttributes()) {
if (attribute.isVersion())
return attribute;
}
return null;
}