2011-04-13 115 views
1

我面对的使用Hibernate的一个问题。我有3个表:tb_user,tb_book,tb_lending。在tb_lending,我有以下字段:Hibernate映射问题的一个一对一/多对一的一个

  • id_lending - INT(11) - 主键
  • id_user - INT(11) - 外键
  • id_book - INT(11) - 国外键

我也有豆代表表(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我得到以下错误:

坟墓抛出:IllegalArgumentException类:com.wa2011.beans.UserBean,财产的getter方法:ID

我真的不知道自tb_book和tb_user以来的问题是什么,就像我在工作之前所说的那样是一种魅力。

在LendingBean.java的保存方法是:

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的千篇一律内的servlet LendingActions调用。

<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

你可以把你节省操作码? – nIKUNJ 2011-04-13 13:22:34

+0

当然!已经做了。如果您需要更多信息,请告诉我。非常感谢。 – LucasM 2011-04-13 13:27:56

回答

0

检查LendingBean bean的id元素来映射。和映射中一样吗?

我觉得你LendingBean应该是这样的:

@Stateless 
public class LendingBean { 

    private Integer id; 
    private BookBean bookId; 
    private UserBean userId; 

... 
} 
+0

我编辑了我的帖子并包含这些信息。他们似乎是正确的。再次感谢。 – LucasM 2011-04-13 13:41:57

+0

看看我更新的答案。 – nIKUNJ 2011-04-14 04:14:04

+0

非常感谢!我应该使用对象本身作为id字段(外键)的数据类型吗?我其实已经改变了一些东西。我会在稍后尝试您的解决方案。我将所有内容都更改为注释,而这次我正在关注一本hibernate的书。 – LucasM 2011-04-19 13:08:52