JPA Обнаружен возвратный поток - PullRequest
1 голос
/ 23 января 2010

У меня небольшая проблема с реализацией openjpa jpa с пружиной 2.5. Мой метод дао:

@Transactional
public User getUserByName(final String name) {
    return (User) getEntityManager().createQuery("select u from User as u where u.name = :name").setParameter("name", name).getSingleResult();
}

возвращает org.springframework.dao.InvalidDataAccessApiUsageException:

org.apache.openjpa.persistence.InvalidStateException: Detected reentrant flush.  Make sure your flush-time instance callback methods or event listeners do not invoke any operations that require the in-progress flush to complete.
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1904)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1679)
at org.apache.openjpa.kernel.QueryImpl.isInMemory(QueryImpl.java:956)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:838)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:779)
at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:525)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:254)
at org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:317)
at org.jpa.dao.UserDao.getUserByName(UserDao.java:71)

// EDIT Настройки EntityManager:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
            <property name="showSql" value="false"/>
        </bean>
    </property>

    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
    </property>
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.OpenJpaDialect"/>
    </property>
</bean>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

Как вы получаете EntityManage? В классе дао:

@PersistenceContext(type = PersistenceContextType.EXTENDED)
protected EntityManager entityManager;

Что не так? Есть идеи?

1 Ответ

0 голосов
/ 27 июня 2014

У меня та же проблема, и я изменяю свою сущность для первичного ключа:

@Id
//@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)

может быть, может помочь вам.

...