如何解决休眠映射问题一对一/多对一
|| 我在使用Hibernate时遇到问题。我有3个表:tb_user,tb_book,tb_lending。在tb_lending中,我具有以下字段: id_lending-int(11)-主键 id_user-int(11)-外键 id_book-int(11)-外键 我还有代表表的Bean(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:类:com.wa2011.beans.UserBean中的IllegalArgumentException,属性:id的getter方法
我真的不知道问题出在哪里,因为我之前说过的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;
...
}
请问你能帮帮我吗?
提前致谢。
解决方法
检查LendingBean bean的id元素是否映射。与映射相同吗?
我认为您的LendingBean应该是这样的:
@Stateless
public class LendingBean {
private Integer id;
private BookBean bookId;
private UserBean userId;
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。