我有一个持久对象(Action)和自动生成的数据模型(Action_)。通过拥有 Action 类的对象和 SingularAttribute 的实例,是否可以获取与给定 SingularAttribute 对应的字段?
我需要这样的功能:
public S getValue(T object,SingularAttribute<T,S> attribute);
我的实体类(Action.java):
@Entity
@Table(name="ACTION")
public class Action implements Serializable {
private long id;
private String name;
public Action() {
}
@Id
@Column(unique=true, nullable=false, precision=6)
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
@Column(length=50)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
我的元模型类(Action_.java):
@StaticMetamodel(Action.class)
public class Action_ {
public static volatile SingularAttribute<Action, Long> id;
public static volatile SingularAttribute<Action, String> name;
}
最佳答案
您可以使用 getJavaMember()
获取成员的方法,然后测试该成员是否为 Field
或 Method
,并使用反射访问字段或调用对象上的方法。
在访问/调用它之前,您可能必须使该字段或方法可访问。而且您还必须处理到对象的原始类型转换。
主要问题是:你为什么需要这个?
如果你只需要这个特定的实体类,你可以简单地在属性名称上使用一个开关并返回适当的值:
switch (attribute.getName()) {
case "name":
return action.getName();
...
}
关于jakarta-ee - 如何获取持久对象的 SingularAttribute 映射值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077464/