java JPA不持久化对象J2EE
我有一个使用JEE5的遗留应用程序,我添加了一个类“People”,并在数据库中添加了很多记录(People只有peopleid和字符串peopledesc)
如果我使用getAllPeople()方法正确填充列表,则所有数据都在那里
但是当我试图通过使用persistPeople(People-pep)的代码来持久化一个新记录时,它什么也做不了
系统。出来println显示添加到对象的描述,以便将新创建的对象传递给该方法,但不会在数据库中持久化:(
控制台输出中未显示任何错误
人们。爪哇
@Entity
public class People implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idpeople;
private String desc;
坚持。xml
<persistence-unit name="PersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entities.People</class>
PeopleDAOImPL.JAVA
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceUnit;
import residencias.dominio.Renovacion;
@Stateless
public class PeopleDAOImpl implements PeopleDAO {
//EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenceUnit");
@PersistenceUnit(unitName="PersistenceUnit")
private EntityManagerFactory emf;
@Override
public void persistPeople(People pep) {
EntityManager em = emf.createEntityManager();
System.out.println("description is :"+pep.getDesc());
em.persist(pep);
}
@Override
public List<People> getAllPeople() {
EntityManager em = emf.createEntityManager();
List<People> results = new ArrayList();
Query queryPrincipal;
try {
queryPrincipal = em.createQuery("SELECT p FROM People p");
results = queryPrincipal.getResultList();
return results;
} catch (Exception e) {
System.out.println(results.size());
return results;
} finally {
if (em != null) {
emf.close();
em.close();
}
}
}
# 1 楼答案
虽然在调用查询期间,您不必在事务中运行,但当您尝试持久化/更新实体的状态时,您必须在事务边界内运行该特定操作
在您的情况下,可以使用以下配置: