gpt4 book ai didi

java - 获取 JPA 实体版本的通用方法

转载 作者:行者123 更新时间:2023-11-30 05:51:01 26 4
gpt4 key购买 nike

我有一个未知的 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;
}

关于java - 获取 JPA 实体版本的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com