如何在异常失效后重新打开JPA EntityManager

时间:2016-07-02 17:42:24

标签: spring hibernate jpa

我有一个简单的基于spring / hibernate / jpa的应用程序。我试图迭代xml文件中的记录列表并将其保存到数据库表中。

我有35条记录,其中3条记录对表中必填的某些字段具有空值。

我收到此错误: org.hibernate.AssertionFailure:com.pilogics.gogabbar.domain.model.entity.UserActivity条目中的null id(发生异常后不要刷新会话)..

由于我无法控制通过文件传输的数据,因此我想简单地跳过这3条记录并继续。但是由于entityManager对象无效,是否必须重新初始化它?

另外,我在spring fopr实体经理工厂中有这个配置:

  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="classpath:jpa/persistence.xml" />
    <property name="persistenceUnitName" value="gg-rw" />
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.pilogics.gogabbar.infra.persistence.hibernate.pojo.*" />
    <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" />
            <property name="generateDdl" value="false" /> 
            <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
        </bean>
    </property>
</bean>

Spring将实体管理器注入dao类:

    @PersistenceContext(unitName="gg-rw")
protected EntityManager entityManagerRw;

如何在catch块中重新初始化entityManager对象以继续使用其余记录?

0 个答案:

没有答案