java - EntityManager persist() 没有将任何内容保存到数据库

标签 java hibernate spring jpa

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

@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" />

最佳答案

这通常发生在未应用事务时。我怀疑@Transactional 拦截器没有正确拦截。

关于java - EntityManager persist() 没有将任何内容保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370736/

相关文章:

Java RegEx 将自关闭 xml 标签转换为结束标签

java - 评估 JPA 提供程序 : Market share of Hibernate/EclipseLink?

java - hibernate 可以用空格映射 EnumTypes 吗?

java - 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

java - 如何为 Spring、Android 和 Plain JAR 组织 Gradle?

java - spring jdbc 和复合主键

java - NoClassDefFoundError对于灰熊的HTTP服务器

java - Java 17 中的 LineNumberReader 是否存在不兼容性?

java - JCIP 中的非最终变量和线程安全

hibernate - 使用 Hibernate 或 JDBC 将用户从 Java 中的用户 session 传递到 Firebird 触发器