Доброго времени суток. Вопрос заключается в следующем. У меня есть табличка в базе MS SQL Server, которая хранит запланированные платежи. В таблице объявлен суррогатный автоинкрементный ключ. Файл маппинга для этой таблички выглядит следующим образом:
| Код | <hibernate-mapping> <class name="mymoney.persistence.Plannedpayment" table="PLANNEDPAYMENT" schema="dbo" catalog="my_money"> <id name="id" type="int"> <column name="ID" /> <generator class="identity" /> </id> <many-to-one name="paymenttype" class="mymoney.persistence.Paymenttype" fetch="join"> <column name="PAYMENTTYPE" not-null="true" /> </many-to-one> <many-to-one name="appuser" class="mymoney.persistence.Appuser" fetch="select"> <column name="USERID" not-null="true" /> </many-to-one> <property name="paymentdate" type="timestamp"> <column name="PAYMENTDATE" length="23" /> </property> <property name="debitamount" type="big_decimal"> <column name="DEBITAMOUNT" precision="15" not-null="true" /> </property> <property name="creditamount" type="big_decimal"> <column name="CREDITAMOUNT" precision="15" not-null="true" /> </property> <property name="ground" type="string"> <column name="GROUND" length="500" /> </property> </class> </hibernate-mapping>
|
Далее в процедуре обработки сообщения от кнопки на странице Visual JSF (написано с использованием IDE NetBeans 6.5) я добавляю новую запись. Выглядит это так:
| Код | public String addBtn_action() {
// тут идёт инициализация параметров...
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction(); Query paymentTypeQuery = session.createQuery("from Paymenttype p where p.id = :id"). setInteger("id", Integer.valueOf(newPaymentTypeDropDown.getValue().toString())); Paymenttype newPaymentType = (Paymenttype) paymentTypeQuery.uniqueResult();
Plannedpayment newPlannedPayment = new Plannedpayment(0, newPaymentType, getSessionBean1().getCurrentUser(), newPaymentPlannedDate.getSelectedDate(), debitAmount, creditAmount, groundValue);
session = HibernateUtil.getSessionFactory().getCurrentSession(); session.persist(newPlannedPayment); session.getTransaction().commit();
// тут вызывается процедура обновления набора данных для таблички (чтобы отобразить добавленные и измененные элементы)
return null; }
|
Один раз этот код отрабатывает нормально. Однако больше одной записи добавить не могу. Очень похоже, что с генератором это никак не связано. Удалял добавленные записи из базы, добавлял снова счетчик генерировался нормально, но больше одной записи добавить не могу. Debuger не заходит в обработчик!!! Это никак объяснить не получается. Помогите, что не так? Как нормально добавлять записи? |