рассмотрите hibernate-link и JTA как поставщик жизненного цикла. Как я могу заставить их ничего не смывать и не справиться с этим?Управление постоянным контекстом перед промывкой
@Stateless
public class SomeBean{
@PersistenceContext
EntityManager em;
public void method(){
em.persist(entity); // will get managed
em.clear(); // everything gets unmanaged
}
}
я ожидал бы, что нет ничего продували в базу данных, но есть, как я могу видеть в тузд оболочки. Итак, как я могу заставить EntityManager
не смывать ничего после сохранения? Благодаря
persistence.xml
для полноты
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ">
<persistence-unit name="pu" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence
<jta-data-source>jdbc/fotbalDataSource
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
это похоже на ошибку в спящем режиме. После того, как я перешел на Eclipelink, он работает как ожидалось – coubeatczech
@coubeatczech Интересно. Мне действительно интересно, если это ошибка или разница в интерпретации спецификации. Вы создали проблему с Jira? –
@coubeatczech Как-то, я не уверен, что вы «ожидали» - это правильное поведение. Спецификация JPA не определяет какой-либо NEW -> MANAGED -> NEW переход. И поскольку NEW -> MANAGED -> DETACHED требует, чтобы объект был устойчивым, прежде чем отсоединять его, я думаю, что Hibernate на самом деле более корректен. –