Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring/JPA/Hibernate持久化实体:什么都没有发生_Java_Spring_Hibernate_Jpa 2.0 - Fatal编程技术网

Java Spring/JPA/Hibernate持久化实体:什么都没有发生

Java Spring/JPA/Hibernate持久化实体:什么都没有发生,java,spring,hibernate,jpa-2.0,Java,Spring,Hibernate,Jpa 2.0,我正在尝试用Spring3、JPA2和Hibernate3制作一个应用程序。 当你坚持一个实体时,我遇到了一个问题:什么都没有发生!数据不会插入数据库,也不会执行查询。 但是当我使用像query.getResultList()这样的请求时,select可以正常工作 因此,我认为我的问题只存在于持久化/更新和事务管理器上,但我对spring不是很在行。 你能帮我吗 以下是我的配置文件: My applicationContext.xml 我的刀 @存储库 公共类UserDaoImpl扩展了Gene

我正在尝试用Spring3、JPA2和Hibernate3制作一个应用程序。 当你坚持一个实体时,我遇到了一个问题:什么都没有发生!数据不会插入数据库,也不会执行查询。 但是当我使用像query.getResultList()这样的请求时,select可以正常工作

因此,我认为我的问题只存在于持久化/更新和事务管理器上,但我对spring不是很在行。 你能帮我吗

以下是我的配置文件:

My applicationContext.xml 我的刀
@存储库
公共类UserDaoImpl扩展了GenericDaoImpl实现
UserDao{
@PersistenceContext(unitName=“soireentreamispu”)
私人实体管理者;
public void persist(最终用户实体){
em.persist(实体);
}
}

有人能帮我吗?

您需要将模型对象添加到persistence.xml文件中。在provider元素add的正下方

<class>com.your.domain.object.User</class>
com.your.domain.object.User

这件事最近发生在我身上。问题是,正如您所说的事务性问题,将@transactional注释添加到所有更新DB的方法中。然后将该库添加到calsspath中,或者将其添加到pom.xml中。如果您使用的是Maven,这对于spring make事务是必需的。即使我用另一种方式做了,我希望它能帮助你。这是我的db.xml,其中包含了所有与数据库相关的spring配置

<!-- Scans within the base package of the application for @Components to configure as beans -->

<context:property-placeholder location="classpath:db.properties"/>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="true" />
            <property name="databasePlatform" value="${db.dialect}" />
        </bean>
    </property>
</bean>

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
    destroy-method="close">
    <property name="driverClass" value="${db.driver}" />
    <property name="jdbcUrl" value="${db.url}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}" />
    <property name="idleConnectionTestPeriodInMinutes" value="1" />
    <property name="idleMaxAgeInMinutes" value="4" />
    <property name="maxConnectionsPerPartition" value="30" />
    <property name="minConnectionsPerPartition" value="10" />
    <property name="partitionCount" value="3" />
    <property name="acquireIncrement" value="5" />
    <property name="statementsCacheSize" value="100" />
    <property name="releaseHelperThreads" value="3" />
</bean>

<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>

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

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

<bean
    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

这是我的persistence.xml

<persistence version="2.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_2_0.xsd">

<persistence-unit name="pu-app" transaction-type="RESOURCE_LOCAL">


</persistence-unit>


我不久前发现了类似的问题。在我的例子中,我需要在dispacher-servlet.xml中添加下面的行。所以我在两个地方需要它(applicationContex.xml和dispacher servlet.xml)



为了澄清一些问题,您没有向服务方法显示“存储”对象,但我相信它是用@Transactional注释的-因为您不想创建新的事务。

我觉得这是事务问题,也许可以尝试在方法上添加@Transactional。谢谢您的回复。我试图在UserServiceImpl中将@transactional添加到我的createUser方法中,但我遇到了相同的问题:(我做到了,但我也遇到了相同的问题。我不知道它是否有帮助,但是,当y持久化时,它会调用SharedEntityManagerCreator.SharedEntityManagerInvoke(…)这个方法“EntityManager target=EntityManager FactoryUtils.doGetTransactionalEntityManager(this.targetFactory,this.properties)”返回null…感谢您的帮助。我尝试了您的解决方案,但遇到了相同的问题:(我的pom.xmlYes中有cglib 2.2.2!这是解决方案!我不明白它为什么有效,但对我来说没关系。谢谢你的帮助!看看这篇文章的答案,这将有助于理解它为什么有效。)
@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);
    }
}
<class>com.your.domain.object.User</class>
<!-- Scans within the base package of the application for @Components to configure as beans -->

<context:property-placeholder location="classpath:db.properties"/>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="true" />
            <property name="databasePlatform" value="${db.dialect}" />
        </bean>
    </property>
</bean>

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
    destroy-method="close">
    <property name="driverClass" value="${db.driver}" />
    <property name="jdbcUrl" value="${db.url}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}" />
    <property name="idleConnectionTestPeriodInMinutes" value="1" />
    <property name="idleMaxAgeInMinutes" value="4" />
    <property name="maxConnectionsPerPartition" value="30" />
    <property name="minConnectionsPerPartition" value="10" />
    <property name="partitionCount" value="3" />
    <property name="acquireIncrement" value="5" />
    <property name="statementsCacheSize" value="100" />
    <property name="releaseHelperThreads" value="3" />
</bean>

<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>

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

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

<bean
    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<persistence version="2.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_2_0.xsd">

<persistence-unit name="pu-app" transaction-type="RESOURCE_LOCAL">


</persistence-unit>
<tx:annotation-driven />