Spring/JPA/Hibernate持久化实体:没有任何事情发生

use*_*850 5 java spring hibernate jpa-2.0

我正在尝试用Spring 3,JPA 2和Hibernate 3创建一个应用程序.当y持久化实体时我遇到了问题:没有任何反应!数据未插入数据库中,也不执行查询.但是,当我使用query.getResultList()之类的请求时,select正常工作.

所以我认为我的问题只出现在持续/更新和事务管理器上,但我对spring并不是很好.你能帮我吗 ?

这是我的配置文件:

我的applicationContext.xml

    <jee:jndi-lookup id="soireeentreamis_DS" jndi-name="jdbc/soireeentreamis" />

    <bean id="persistenceUnitManager"
        class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
        <property name="persistenceXmlLocations">
            <list>
                <value>classpath*:META-INF/persistence.xml</value>
            </list>
        </property>
        <property name="defaultDataSource" ref="soireeentreamis_DS" />
        <property name="dataSources">
            <map>
                <entry key="soireeentreamisDS" value-ref="soireeentreamis_DS" />
            </map>
        </property>
    </bean>

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitManager" ref="persistenceUnitManager" />
        <property name="persistenceUnitName" value="soireeentreamisPU" />
        <property name="jpaDialect">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
        </property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="false" />
            </bean>
        </property>
    </bean>

    <bean id="soireeentreamisTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <property name="jpaDialect">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
        </property>
    </bean>

    <tx:annotation-driven transaction-manager="soireeentreamisTransactionManager" />

    <context:annotation-config />
</beans>
Run Code Online (Sandbox Code Playgroud)

我的persistence.xml

    <persistence-unit name="soireeentreamisPU"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>soireeentreamisDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.hbm2ddl.auto" value="create"/>
        </properties>
    </persistence-unit>
Run Code Online (Sandbox Code Playgroud)

我的服务

@Service
@Transactional("soireeentreamisTransactionManager")
public class UserServiceImpl implements UserService ...
Run Code Online (Sandbox Code Playgroud)

我的道

@Repository
public class UserDaoImpl extends GenericDaoImpl<User, String> implements
        UserDao {  
@PersistenceContext(unitName = "soireeentreamisPU")
private EntityManager em;   
public void persist(final User entity) {
        em.persist(entity);
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

gre*_*aco 5

我刚才发现类似的问题.在我的情况下,我需要在我的dispacher-servlet.xml中添加以下行.所以我需要在2个地方(applicationContex.xml和dispacher-servlet.xml)

<tx:annotation-driven />
Run Code Online (Sandbox Code Playgroud)

为了清除某些内容,你没有显示你的服务方法"存储"对象,但我相信它是用@Transactional注释的 - 因为没有你要创建的新事务.