在我的模型中,我有一个抽象的“用户”类,以及多个子类,例如申请人、HiringManager 和面试官。它们在一个表中,我有一个 DAO 来管理它们。
用户:
@Entity
@Table(name="User")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="role",
discriminatorType=DiscriminatorType.STRING
)
public abstract class User extends BaseObject implements Identifiable<Long> ...
招聘经理(例如):
@Entity
@DiscriminatorValue("HIRING_MANAGER")
public class HiringManager extends User ...
现在,如果我想获得所有与部门无关的招聘经理,我会怎么做?我想它看起来像:
DetachedCriteria c = DetachedCriteria.forClass(User.class);
c.add(Restrictions.eq("role", "HIRING_MANAGER"));
c.add(Restrictions.isNull("department"));
List<User> results = getHibernateTemplate().findByCriteria(c);
但是当我运行它时,Hibernate 抱怨“无法解析属性:角色”(这实际上是有道理的,因为 User 类确实没有明确的角色属性)
那么做我想做的事情的正确方法是什么?