我在让EntityManager将@Entity对象保留在独立应用程序中时遇到问题。 没有错误,但是没有任何内容可持久存储到HSQL数据库中。 我敢肯定这一定是愚蠢的,但我现在已经不知所措了。 我已经搜索并尝试了所有方法,但仍然无法正常工作。

appconfig.xml:

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" />
<bean id="productDaoImpl" class="test.ProductDao"/>
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>
<context:component-scan base-package="test">
</context:component-scan>

persistence.xml:

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>  
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.username" value=""/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:file://c:/db2"/>
</properties>
</persistence-unit>
</persistence>

EntityObj.java:

package test;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class EntityObj {
@Id
@GeneratedValue
private int id;
private String value;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

ProductDao.java:

package test;
import org.springframework.dao.DataAccessException;
public interface ProductDao {
public void save(EntityObj obj) throws DataAccessException;
}

ProductDaoImpl.java:

package test;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
@Transactional
public class ProductDaoImpl implements ProductDao {
@PersistenceContext
private EntityManager entityManager;
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Transactional (readOnly = false)
public void save(EntityObj obj)
{
try
{
entityManager.persist(obj);
entityManager.flush();
}
catch(Exception e)
{
e.printStackTrace();
}
}    
}

Main.java:

package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Main {
public static void main(String[] args)
{
ApplicationContext springContext = new FileSystemXmlApplicationContext("classpath*:appconfig.xml");
ProductDao dao = (ProductDao) springContext.getBean("productDaoImpl");
EntityObj obj = new EntityObj();
obj.setValue("Blah");
dao.save(obj);
}
}

没有任何错误,看起来好像已经保存了EntityObj,但数据库中没有任何持久性。 我觉得它与事务相关,可能是由于我如何实例化对象,但我不确定。 ENTITYOBJ数据库表是自动创建的,仅没有数据。

  ask by Sam translate from so

本文未有回复,本站智能推荐:

2回复

Spring应用程序中有多个entityManager。重复对象的持久性问题

我的Spring组件从客户端收到请求,向Web服务询问一些数据,并将接收到的对象保存到数据库中。 我识别所有对象并仅保存新对象。 当客户端发出的同一时间两个或两个以上相同的请求(或因甚至不同的用户请求我收到来自网络的服务相同的对象),就会出现问题 。 为了持久描述问题,这里有一些细节。
2回复

Spring/Hibernate:EntityManager乘实例

我正在尝试从ID列表返回Hibernate实体的列表。 以下代码段负责: 代码执行完后,我将列出3个id和60个FooEntity实例! 在正常情况下,我希望这些代码行可以提供与id一样多的实体。 有什么想法会导致这种奇怪的行为吗? 编辑:对下面Thomas的评论做出反应,我发现
2回复

在Spring上实例化EntityManager

我在我的spring 3.2.2应用程序中使用基础hsqld上的实体管理器: 我的pom.xml依赖项: 我的问题是我的EntityManager em为空。 因此,实体经理不会被春天注入。 这是我的应用程序上下文: 为什么我的应用程序上下文没有被实例化的任何建议? Sprin
1回复

EntityManager持久化和合并在@Transactional方法中不起作用

我有@Transactional 注释和 EntityManager 持久化和合并方法的奇怪行为。 我已将方法注释为@Transactional,并在其中调用 EntityManager.persists(entity)...但没有任何反应。 实体不保存到数据库,没有异常被触发,完全没有。 我已经阅
1回复

Spring,Hibernate,EntityManager和类继承

我是Spring&Hibernate的新手。 在我们的团队中,我们正在使用Struts 2作为表示层构建一个Web应用程序,并在其下面使用Spring 3和Hibernate 3(带有批注)。 我们仍在争论是否使用DAO以及Session或EntityManager进行CRUD操作。 撇开
4回复

Spring存储库中的EntityManager注入时的java.lang.NullPointerException

我是Spring MVC的新手。 我一直在寻找解决问题的几天,没有任何成功。 这是我的堆栈: jBoss 4.2.3GA服务器 我知道这是一个非常古老的版本,但这就是我现在所限制的。 jBoss 7.1将在未来几个月内批准在我的组织中使用,但我想让我的研发应用程序在4
1回复

Spring4和Hibernate4EntityManager实例为null

每当我尝试使用通过@PersistenceContext批注使用的entitymanager ,它为null。 我正在使用glassfish服务器4.1:我在日志中得到以下信息: 我的applicationContext是以下内容: 我的存储库类如下: 每当我尝试: 它返回tr
1回复

EntityManager+Spring事务性问题

我对概念有疑问,我认为我正在混合一些东西。 我有一个带有DAO层的应用程序,那些DAO的实现使用SessionFactory(Hibernate)来执行CRUD操作,我也有一个服务层并使用Spring声明式事务管理我的工作单元,并且一切正常,我不确定是否使用EntityManager,但似乎它