问题描述
||
在我的应用程序中,我有一个这样的映射
@MappedSuperclass
public abstract class Base implements Serializable {
@Entity
@Table(name = \"LevelOne\")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class LevelOne extends Base {
@Entity
@Table(name = \"LevelTwo\")
public class LevelTwo extends LevelOne {
@Entity
@Table(name = \"LevelThree\")
public class LevelThree extends LevelTwo {
可以按预期在数据库中创建表。当我尝试创建这样的查询时,我遇到了问题:
session.getCurrentSession().createCriteria(LevelOne.class,\"levelOne\"). [..] .list();
我从所有其他LevelX表中不仅从LevelOne表中获得结果。
我不确定是否会发生此行为,或者通过不使用带有\“ @ Inheritance \”批注的抽象类来映射是否出错,但是我只需要获取\“ LevelOne \”结果。
我怎么能得到它们?
解决方法
是的,这是预期的行为。如果仅需要
LevelOne
,则对隐式class
属性添加限制:
session.getCurrentSession()
.createCriteria(LevelOne.class,\"levelOne\")
.add(Restrictions.eq(\"class\",LevelOne.class))
. [..] .list();