我在使用Hibernate时遇到了问题。我有3个表:tb_user,tb_book,tb_lending。在 tb_lending 中,我有以下字段:
我还有表示表格的豆子(tb_user和tb_book正常运作)。
我的tbLending.hbm.xml映射此字段:
<id name="id" type="java.lang.Integer">
<column name="id_lending" />
<generator class="identity" />
</id>
<many-to-one name="userId" class="com.wa2011.beans.UserBean"
not-null="true" cascade="all" unique="true" column="id_user" />
<many-to-one name="bookId" class="com.wa2011.beans.BookBean"
not-null="true" cascade="all" unique="true" column="id_book" />
从业务逻辑来看,关联应该是一对一的,因为对于每个id_lending,我可以拥有1个用户和1本书。但我在一些论坛上以这种方式阅读,使用多对一,然后声明unique =“true”。
但是,当我执行query.save时,我收到以下错误:
GRAVE:类中的IllegalArgumentException:com.wa2011.beans.UserBean,属性的getter方法:id
我真的不知道问题是什么,因为tb_book和tb_user正如我在工作之前说的那样魅力。
LendingBean.java中的save方法是:
public void saveLend(LendingBean lendingBean) {
Session session = iniHibernate();
try {
session.beginTransaction();
session.save(lendingBean);
session.getTransaction().commit();
} catch (Exception e) {
System.out.println("Error on registering lend:");
System.out.println(e);
}
}
此方法由processRequest方法中的servlet LendingActions调用,与我跟随其他bean / servlet的模式相同。
<class name="com.wa2011.beans.LendingBean" table="tb_lending" catalog="wa2011">
<id name="id" type="java.lang.Integer">
<column name="id_lending" />
<generator class="identity" />
</id>
...
</class>
在LeandingBean.java中我有:
@Stateless
public class LendingBean {
private Integer id;
private Integer bookId;
private Integer userId;
...
}
你能帮助我吗?
提前致谢。
答案 0 :(得分:0)
检查LendingBean bean的id元素到映射。和映射一样吗?
我认为你的LendingBean应该是这样的:
@Stateless
public class LendingBean {
private Integer id;
private BookBean bookId;
private UserBean userId;
...
}