EntityManager持久()不保存任何东西到数据库 [英] EntityManager persist() not saving anything to database

查看:101
本文介绍了EntityManager持久()不保存任何东西到数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的entityManager persist()从序列中获取id并将其放到我的Image对象中,但Image对象本身没有显示在数据库中。 EntityManager.flush()给出一个错误,所以我不能以这种方式提交。这是我的代码。

  @Repository 
public class ImageDaoImpl extends BaseDao implements ImageDao {
$ b $ @PersistenceContext
protected EntityManager entityManager;

@Override
@Transactional
public void create(Image image){
JpaTemplate jpaTemplate = getJpaTemplate(entityManager);
jpaTemplate.persist(image);

 

  @Repository 
public class BaseDao {

private JpaTemplate jpaTemplate;


public JpaTemplate getJpaTemplate(EntityManager entityManager){
if(jpaTemplate == null)
jpaTemplate = new JpaTemplate(entityManager);
返回jpaTemplate;

 

 < bean id =entityManagerFactory
class =org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
p:dataSource-ref =dataSource>
< property name =jpaVendorAdapter>
< bean class =org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter>
< property name =showSqlvalue =true/>
< property name =generateDdlvalue =true/>
< property name =databasePlatformvalue =org.hibernate.dialect.PostgreSQLDialect/>
< / bean>
< / property>
< property name =persistenceUnitNamevalue =sample>< / property>
< / bean>



<! - - DataSource设置 - >
< bean id =dataSourceclass =org.springframework.jdbc.datasource.DriverManagerDataSource>
< property name =driverClassNamevalue =org.postgresql.Driver/>
< property name =urlvalue =jdbc:postgresql:// localhost:5432 / imageCapture/>
< property name =usernamevalue =myusername/>
< property name =passwordvalue =mypassword/>
< / bean>


< bean id =transactionManagerclass =org.springframework.orm.jpa.JpaTransactionManager>
< property name =entityManagerFactoryref =entityManagerFactory/>
< / bean>

< tx:注解驱动的事务管理器=transactionManager/>


解决方案

怀疑@交易拦截器没有正确拦截。

My entityManager persist() gets id from sequence and puts it to my Image object but the Image object itself is not showing up in the database. EntityManager.flush() gives an error so I can't commit this way. Here is my code.

@Repository
public class ImageDaoImpl extends BaseDao implements ImageDao {

@PersistenceContext
protected EntityManager entityManager;

@Override
@Transactional
public void create(Image image) {       
    JpaTemplate jpaTemplate = getJpaTemplate(entityManager);
    jpaTemplate.persist(image);
}

 

@Repository
public class BaseDao {

private JpaTemplate jpaTemplate;


public JpaTemplate getJpaTemplate(EntityManager entityManager){
    if(jpaTemplate == null)
        jpaTemplate = new JpaTemplate(entityManager);
    return jpaTemplate;
}

 

<bean id="entityManagerFactory"
       class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
       p:dataSource-ref="dataSource">
       <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="org.hibernate.dialect.PostgreSQLDialect" />
            </bean>
        </property>
        <property name="persistenceUnitName" value="sample"></property>
    </bean>



    <!-- DataSource Setup -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/imageCapture" />
        <property name="username" value="myusername" />
        <property name="password" value="mypassword" />
    </bean>


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

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

解决方案

This generally happens when Transaction in not applied.. I doubt @Transactional interceptor is not intercepting properly.

这篇关于EntityManager持久()不保存任何东西到数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆