Grz*_*zzz 10 spring hibernate jpa persist
我有使用EntityManager.persist(Object)
方法的问题.现在当我摆脱其他问题时,通过app工作没有Exception但是对象没有放在我的数据库中.
我的实体类:
@Entity
@Table(name ="Chain")
public class Chain implements Serializable{
@Id
@Column(name = "id")
private Long id;
@Column(name = "date")
private Date date;
@Column(name = "name")
private String name;
//setters and getters
}
Run Code Online (Sandbox Code Playgroud)
我的道教课:
@Transactional
@Repository("ChainDao")
public class ChainDaoImpl implements ChainDao{
private EntityManager em;
@PersistenceContext
public void setEntityManager(EntityManager em) {
this. em = em;
}
public int saveChain(Chain chain) {
chain.setDate(new Date());
chain.setId((long)44);
Boolean a;
em.persist(chain);
return 222;
}
}
Run Code Online (Sandbox Code Playgroud)
我的xml上下文:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >
<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"></property></bean>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)
并且pereistence.xml
:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="sample">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- Scan for annotated classes and Hibernate mapping XML files -->
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/database"/>
<property name="hibernate.connection.username" value="postgres"/>
<property name="hibernate.connection.password" value="pwd"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
有谁知道我错过了什么?
你有特殊的例外吗?如果你是的话,知道它是什么会很有帮助.
Stackoverflow上已经存在许多类似的问题:
Spring,Hibernate和JPA:在entitymanager上调用persist似乎没有提交到数据库
这些建议,你应该尝试加入em.flush()
后em.persist(chain)
,并改变@transactional
注释
您还应检查是否已通过以下行启用了事务注释:
<tx:annotation-driven transaction-manager="transactionManager"/>
Run Code Online (Sandbox Code Playgroud)
在.xml配置中
小智 7
试试这个:
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)
PS:你也应该为你的ID设置一个生成方法.
归档时间: |
|
查看次数: |
62401 次 |
最近记录: |