Eclipselink 实体持续存在问题



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

线程"main"中的异常 java.lang.IllegalStateException: 异常 说明:当前没有交易处于活动状态 org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:123) 在 com.training.service.EmployeePersistance.main(EmployeePersistance.java:23)

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

System.out.println(Persistence.createEntityManagerFactory("_EclipseLinkTraining").isOpen());

这是返回真。表不是在数据库中创建的。执行代码后,表将自动生成,但对象未持久化。以下是我的代码,它引起了麻烦:实体类:

@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");
}

你正在获取事务,然后提交它,但你从未开始过它。因此,正如消息所述,当前没有活动交易。

最新更新