我正在使用嵌入在WebSphere App Server 8.5.5.2和Derby 10.8中的openJPA 2.2.3。我试图获得一个简单事务的序列,但openJPA没有找到序列表。
Caused by: <openjpa-2.2.3-SNAPSHOT-r422266:1564471 fatal general error> org.apache.openjpa.persistence.PersistenceException: SEQUENCE 'EMPLOYEE_SEQ' does not exist. {VALUES NEXT VALUE FOR EMPLOYEE_SEQ} [code=20000, state=42X94]
这是我的DDL:
CREATE SEQUENCE EMPLOYEE_SEQ AS INTEGER START WITH 1 INCREMENT BY 1;
CREATE TABLE EMPLOYEE (
EMPLOYEEID INT PRIMARY KEY,
FIRSTNAME VARCHAR(30),
LASTNAME VARCHAR(30),
SALARY DOUBLE
);
我的JPA代码:
@Id
@SequenceGenerator(name="EMPLOYEE_EMPLOYEEID_GENERATOR", sequenceName="EMPLOYEE_SEQ", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EMPLOYEE_EMPLOYEEID_GENERATOR")
private int employeeid;
我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="DWGenExJPA" transaction-type="JTA">
<jta-data-source>jdbc/employee</jta-data-source>
<class>com.xxx.xxx.model.Employee</class>
<properties>
<property name="openjpa.jdbc.DBDictionary" value="derby(NextSequenceQuery=VALUES NEXT VALUE FOR {0})"/>
<property name="openjpa.Log" value="File=/tmp/org.apache.openjpa.log,DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
</properties>
</persistence-unit>
</persistence>
任何人都有使用derby和openJPA的序列经验可以帮助我。
谢谢,Brian