DetachedCriteria抛出未知实体null

时间:2015-03-08 13:36:32

标签: java hibernate

我有两个映射表,如下所示(在数据库中,recipient_id是播放器表的外键):

@Entity
@Table(name="recipient_recipient_group")
public class RecipientRecipientGroup {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name="recipient_group_id")
    private String recipientGroupId;

    @Column(name="recipient_id")
    private int recipientId;

    //GET, SET
}

@Entity
@Table(name = "player")
@Inheritance(strategy = InheritanceType.JOINED)
public class Player {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "ps_id")
    private String psId;

    //GET, SET and some other stuff not relating to the RecipientRecipientGroup entity

}

我需要编写标准子查询。我尝试了以下子查询:

Criteria criteria = getSession().createCriteria(Player.class);
if(groupId != null){
    DetachedCriteria ownerCriteria = DetachedCriteria.forClass(RecipientRecipientGroup.class, "group");
    ownerCriteria.setProjection(Property.forName("group.recipient_id"));
    ownerCriteria.add(Restrictions.eq("group.recipient_group_id", groupId));
    criteria.add(Property.forName("id").in(ownerCriteria));
}

我得到了例外:

org.hibernate.MappingException: Unknown entity: null
    org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:548)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getPropertyMapping(CriteriaQueryTranslator.java:518)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getType(CriteriaQueryTranslator.java:477)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getTypeUsingProjection(CriteriaQueryTranslator.java:459)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getTypedValue(CriteriaQueryTranslator.java:509)
    org.hibernate.criterion.SimpleExpression.getTypedValues(SimpleExpression.java:71)

我该如何解决?

0 个答案:

没有答案