假设我有3个实体:
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = 'type', discriminatorType = DiscriminatorType.STRING)
public class Task {
...
}
@DiscriminatorValue("rank")
public class RankTask extends Task {
String keyword;
}
@DiscriminatorValue("Store")
public class SearchTask extends Task {
String keyword;
}
现在问题是当我想获得关键字列表时,hibernate上的第一个连接有关键字(hibernate自动创建连接)而我无法访问第二个关键字。无论如何都要通过创建别名来访问第二个关键字吗?
getSession().createCriteria(Task.class, "t")
.setProjection(projectionList()
.add(Projections.property('t.keyword'), 'keyword')
)
.list();