У меня проблема с использованием Hibernate. У меня есть 3 таблицы: tb_user, tb_book, tb_lending. В tb_lending у меня есть следующие поля:
- 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, я получаю следующую ошибку:
GRAVE: IllegalArgumentException в классе: com.wa2011.beans.UserBean, метод получения свойства: 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);
}
}
Этот метод вызывается сервлетом LendingActions внутри метода processRequest, по той же схеме, что и я с другими bean / сервлетами.
<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;
...
}
Не могли бы вы помочь мне, пожалуйста?
Заранее спасибо.