我有一个方法,它接受实体列表(Class
es)并进行一些计算。在这里描述我的需求是最简单的方法概要(伪代码):
public void do(List<Class<?> entities) {
for (Class<?> entity : entities) {
List<?> list = session.createCriteria(entity).list();
for (Object o : list) {
System.out.println(o.getClass().getSimpleName() + " " + o.getId());
}
}
}
有没有办法可以访问/获取 o
的ID?
答案 0 :(得分:6)
session.getIdentifier(o)
答案 1 :(得分:1)
好吧,也许它会受到很多批评,但你所有的实体类都可以实现这个界面:
public interface EntityWithId {
Integer getId();
void setId(Integer id);
}
如果你的id不是整数,那么界面可能是:
public interface EntityWithId<T> {
T getId();
setId(T id);
}
public class Entity implements EntityWithId<String> {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
.
.
.
}
无论如何,我不明白为什么你想要获得所有实体的ID,这对于一个奇怪的要求来说是一个奇怪的解决方案,呵呵。
答案 2 :(得分:0)
除非您在所有实体上都具有相同的属性,否则您可以使用反射来调用该属性的getter。如果他们都被命名为不同的东西,那么你会得到一个NoSuchMethodException