我無法使用spring和hibernate來保存數據。我看了各種帖子,並嘗試了很多東西。但它不起作用。 我會先發布我的配置,然後嘗試我嘗試的步驟。將不勝感激任何幫助。無法使用Spring +休眠來保存數據
彈簧jpa.xml
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="defaultLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" />
<context:component-scan base-package="com.gamelist.dao.classes" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" p:entityManagerFactory-ref="entityManagerFactory"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
GenericDAO.java
public class GenericDaoJPA<T extends IDomainObject> implements IGenericDao<T> {
protected EntityManager entityManager;
@PersistenceContext
public void setEntityManager(EntityManager entityManager){
this.entityManager = entityManager;
}
public void save(T object) throws DataAccessException{
entityManager.persist(object);
}
.
.
.
.
}
User.java(域)
@Entity
@Table(name = "user")
public class User implements Serializable, IDomainObject{
private long id;
private String firstName;
@Id
@GeneratedValue
public final long getId(){
return id;
}
public void setId(long id){
this.id = id;
}
public String getFirstName(){
return firstName;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
}
TestService.java(userDAO的實現IUserDao和延伸GenericDao )
@Service(value = "testService")
@Transactional
public class TestService implements ITestService {
@Autowired
private IUserDao userDao;
@Transactional(readOnly = false)
public void saveUser(User newUser){
userDao.save(newUser);
}
.
.
.
}
的persistence.xml
<persistence-unit name="gamelistPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<!--
value='create' to build a new database on each run;
value='update' to modify an existing database;
value='create-drop' means the same as 'create' but also drops tables when Hibernate closes;
value='validate' makes no changes to the database
-->
</properties>
</persistence-unit>
我沒有得到任何錯誤或異常或任何東西。我能夠從我的數據庫中讀取。只有更新,添加或刪除不會持續。
這是所有我的嘗試
- 一個帖子中提到的改變交易型=「RESOURCE_LOCAL」到JTA說RESOURCE_LOCAL不持續的。我認爲這是因爲如果您僅使用hibernate而不使用RESOURCE_LOCAL管理事務。我相信春天會爲你管理交易。
- 一些提到做em.flush或em.getTransaction.begin並在使用persist後提交。但每次使用上述操作時都會出現此錯誤。 不允許在共享EntityManager上創建交易
任何幫助表示讚賞。在此先感謝
你可以發佈你的UserDao類嗎? – Rafa
當使用'transaction-type =「RESOURCE_LOCAL' –
時,嘗試使用'@ PersistenceUnit'作爲[這裏](http://tomee.apache.org/jpa-concepts.html)中提及的內容。什麼是調用所有這些而不是持續? –