当我执行以下操作时,Hibernate throws无法解析属性

时间:2011-06-29 04:26:34

标签: java hibernate

public class UserRole implements java.io.Serializable {
    /** */
    private long id;

    /** */
    private UserAcegi userAcegi;
    /**
     * 
     */
    public UserRole() {
    }
    /**
     * 
     * @param idVar -
     */
    public UserRole(final int idVar) {
        this.id = idVar;
    }
    /**
     * 
     * @param idVar -
     * @param roleVar -
     * @param userAcegiVar -
     */
    public UserRole(final int idVar, final UserAcegi userAcegiVar) {
        this.id = idVar;

        this.userAcegi = userAcegiVar;
    }
    /**
     * 
     * @return long
     */
    public long getId() {
        return this.id;
    }
    /**
     * 
     * @param idVar -
     */
    public void setId(final long idVar) {
        this.id = idVar;
    }

    /**
     * 
     * @return UserAcegi
     */
    public UserAcegi getuserAcegi() {
        return this.userAcegi;
    }
    /**
     * 
     * @param userAcegiVar -
     */
    public void setuserAcegi(final UserAcegi userAcegiVar) {
        this.userAcegi = userAcegiVar;
    }

}

<hibernate-mapping>
    <class name="UserRole" table="userrole" >
        <id name="id" type="long">
            <column name="id" />
            <generator class="native" />
        </id>

        <many-to-one name="userAcegi" class="UserAcegi" fetch="select">
            <column name="userid" />
        </many-to-one>
    </class>
</hibernate-mapping>

===========================================

Criteria criteria = ThreadSessionManager.getCurrentThreadSession().currentAccegiSession().createCriteria(UserRole.class);

  criteria.add(Restrictions.eq("userAccegi.id", "7300765"));

  final List objList = criteria.list();
  return objList;

2 个答案:

答案 0 :(得分:0)

更改此行 criteria.add(Restrictions.eq(“userAccegi.id”,“7300765”)); as criteria.add(Restrictions.eq(“userAccegi.userid”,“7300765”));

希望它能奏效。

答案 1 :(得分:0)

如果要引用userAcegi属性的id属性,则可能需要为userAcegi属性设置别名。它看起来像下面这样:

Criteria criteria = ThreadSessionManager.getCurrentThreadSession().currentAccegiSession().createCriteria(UserRole.class);

criteria.createAlias("userAcegi", "ua", Criteria.INNER_JOIN);
criteria.add(Restrictions.eq("ua.id", "7300765"));

希望这有帮助!