gpt4 book ai didi

java - Eclipselink 实体持续存在问题

转载 作者:行者123 更新时间:2023-12-01 10:10:59 25 4
gpt4 key购买 nike

我正在通过一些在线教程学习 Eclipselink。当前在保留对象时遇到问题。

Exception in thread "main" java.lang.IllegalStateException: Exception Description: No transaction is currently active at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:123) at com.training.service.EmployeePersistance.main(EmployeePersistance.java:23)

我使用 JPA 连接器的数据库连接工作正常。我已经通过执行

测试了连接
System.out.println(Persistence.createEntityManagerFactory("_EclipseLinkTraining").isOpen());

返回 true。数据库中未创建表。执行代码后,表会自动生成,但对象不会被持久化。以下是我造成问题的代码:实体类:

@Entity
public class Employee {
@Id
int empId;

@Basic(optional=true)
String empName;

//getters and setters
}

持久性.xml:

<persistence-unit name="_EclipseLinkTraining" transaction-type="RESOURCE_LOCAL">
<class>com.training.entity.Employee</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/ecpliselink_training"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>

java主方法:

public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("_EclipseLinkTraining");
EntityManager manager = factory.createEntityManager();

manager.getTransaction();

Employee emp = new Employee();
emp.setEmpId(1);
emp.setEmpName("sam");
manager.persist(emp);

manager.getTransaction().commit();

manager.close();
factory.close();
System.out.println("completed");
}

最佳答案

您正在获取事务,然后提交它,但您从未begun它。因此,正如消息所述,当前没有 Activity 的交易。

关于java - Eclipselink 实体持续存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36117271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com