我有一个未知的 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)
method.
有没有办法从未知实体获取版本?
只是比 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)