我开发了一些单元测试,但所有 SQL 语句都失败了,你能看看这个日志和配置吗?
2012 年 7 月 1 日下午 4:33:05 org.glassfish.persistence.common.Java2DBProcessorHelper executeDDLs 警告:PER01000:得到 SQLException 执行语句“CREATE TABLE CAR (ID BIGINT NOT NULL, BRAND VARCHAR(255) NOT NULL, DESCRIPTION VARCHAR(255 )、FUEL VARCHAR(255) NOT NU\ LL、GEARBOX VARCHAR(255) NOT NULL、KILOMETERS INTEGER NOT NULL、MODEL VARCHAR(255) NOT NULL、PRICE INTEGER NOT NULL、TYPE VARCHAR(255) NOT NULL、YEAR INTEGER NOT NULL , EQUIPM\ ENT_ID BIGINT, SECURITY_ID BIGINT, PRIMARY KEY (ID))”:java.sql.SQLSyntaxErrorException:语法错误:在第 1 行第 263 列遇到“YEAR”。2012 年 7 月 1 日下午 4:33:05 org.glassfish .persistence.common.Java2DBProcessorHelper executeDDLs WARNING: PER01000: Got SQLException execution statement "CREATE TABLE VEHICLE (ID BIGINT NOT NULL, MAKE VARCHAR(255) NOT NULL,MODEL VARCHAR(255) NOT NULL, TRIM VARCHAR(255) \ NOT NULL, YEAR INTEGER NOT NULL, PRIMARY KEY (ID))”:java.sql.SQLSyntaxErrorException:语法错误:在第 1 行第 100 列遇到“TRIM”。 2012 年 7 月 1 日下午 4:33:06 org.glassfish.persistence.common.Java2DBProcessorHelper executeDDLs 警告:PER01000:得到 SQLException 执行语句“ALTER TABLE CAR ADD CONSTRAINT FK_CAR_SECURITY_ID FOREIGN KEY (SECURITY_ID) REFERENCES SECURITY (ID)”:java.sql .SQLSy\ ntaxErrorException: 'ALTER TABLE' 不能在 'CAR' 上执行,因为它不存在。2012 年 7 月 1 日下午 4:33:06 org.glassfish.persistence.common.Java2DBProcessorHelper executeDDLs 警告:PER01000:得到 SQLException 执行语句"ALTER TABLE CAR ADD CONSTRAINT CAR_EQUIPMENT_ID FOREIGN KEY (EQUIPMENT_ID) REFERENCES EQUIPMENT (ID)": java.sql.SQLSy\ ntaxErrorException: 'ALTER TABLE' 不能在 'CAR' 上执行,因为它不存在。2012 年 7 月 1 日 4:33 :06 PM com.sun.ejb.containers.BaseContainer initializeHome 信息:EJB5181:EJB VehicleEJB 的可移植 JNDI 名称:[java:global/classes/VehicleEJB!com.thevehiclelist.VehicleEJB, java:global/classes/VehicleEJB] 7 月 1 日, 2012 下午 4:33:06 com.sun.ejb.containers.BaseContainer initializeHome 信息:EJB5181:EJB BookEJB 的可移植 JNDI 名称:[java:global/classes/BookEJB!se.while_se.BookEJB,java:global/classes/BookEJB ] 2012 年 7 月 1 日下午 4:33:06 com.sun.ejb.containers.BaseContainer initializeHome 信息:EJB5181:EJB CarEJB 的可移植 JNDI 名称:[java:global/classes/CarEJB,java:global/classes/CarEJB!se.while_se.CarEJB] 2012 年 7 月 1 日下午 4:33:07 org.eclipse.persistence.session.file:/tmp/gfembed468260415984552053tmp/applications/classes/_carcmsPU 警告:本地异常堆栈:异常 [ EclipseLink-4002](Eclipse Persistence Services - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException 内部异常:java.sql.SQLSyntaxErrorException:语法错误:在第 1 行第 39 列遇到“TRIM”。错误代码:20000 调用:INSERT INTO VEHICLE (ID, MAKE, MODEL, TRIM, YEAR) VALUES (?, ?, ?, ?, ?) bind => [5 个参数绑定] 查询:InsertObjectQuery(Vehicle [id=1, year=2007, make=Volvo, model=V70, trim=2.4D]) 在 org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333) 在 org.eclipse.persistence.internal。databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644) 在 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535) 在 org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession. java:1717) 在 org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253) 在 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207) 在 org.eclipse .persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193) 在 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:342) 在 org.eclipse.persistence.internal。query.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:162) 在 org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:177) 在 org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism. java:472) 在 org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80) 在 org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90) 在 org.eclipse.persistence.internal .queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:287) 在 org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58) 在 org.eclipse.persistence.queries.DatabaseQuery。在 org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108) 在 org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743) 执行(DatabaseQuery.java:844) .persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85) 在 org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)executeInUnitOfWork(ObjectLevelModifyQuery.java:85) 在 org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)executeInUnitOfWork(ObjectLevelModifyQuery.java:85) 在 org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)
我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="2.0">
<persistence-unit name="carcmsPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/__default</jta-data-source>
<class>se.while_se.Book</class>
<class>se.while_se.Car</class>
<class>com.thevehiclelist.Vehicle</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby:MyTestDb;create=true" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
</properties>
</persistence-unit>
</persistence>
还有我的 pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.8.2.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
我不知道它可能是什么,尝试了很多谷歌搜索,但没有找到任何关于这个东西的参考代码。你能看看我的配置有什么问题或建议我获取一些文档吗?
最好的问候