Я пытаюсь удалить объекты в конфигурации JPA/Hibernate. База данных представляет собой встроенный файл HSQL.Спящий режим: не удается удалить объекты
Это код делает удаление:
EntityManager em = PersistenceUtility.getInstance().createEntityManager();
EntityTransaction t = em.getTransaction();
t.begin();
List<ServiceTicket> tickets = em.createQuery("from ServiceTicket").getResultList();
for (ServiceTicket ticket : tickets) {
Report report = ticket.getReport();
em.merge(report);
em.merge(ticket);
em.remove(report);
em.remove(ticket);
}
em.flush();
t.commit();
В ServiceTicket
ссылается на entitiy Report
. Вот почему мне пришлось сначала удалить Report
.
В этом контексте я не получаю сообщение об ошибке. Но изменения не записываются в базу данных.
Вот конфигурация единицы сохранения:
<persistence-unit name="local_hsql" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>Report</class>
<class>ServiceTicket</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:etc/database/db1"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.connection.SetBigStringTryClob" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
Что я делаю неправильно?
Заранее спасибо и привет из Германии
Marco
Acouple комментариев: Там нет необходимости объединить entites, они уже успели. Также имейте в виду, что merge возвращает управляемый объект, но ничего не делает для объекта, переданного как аргумент. Нет необходимости выполнять флеш, поскольку вы фиксируете изменения в строке после. Другой (более простой) подход должен был бы объявить отображение ServiceTicket как cascade = CascadeType.REMOVE (или ALL) в отчете и только вызвать em.remove() в отчете. Возможно, что-то не так с EntityManager. Работает ли что-нибудь с этим? (как в ней найти отчеты в этом фрагменте кода?) (включить show sql) – esej