2014-02-27 31 views
1

我使用Glassfish的4和JPA 2.1 ANS Netbeans的7數據庫生成失敗JPA

爲了生成表我有這些豆子:

@Entity 
public class Myuser implements Serializable{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long myuserId; 

    @Column(name = "firstname") 
    private String firstName; 

    @Column(name = "lastname") 
    private String lastName; 

    @Column(name = "mail") 
    private String mail; 

    @Column(name = "password") 
    private String password; 

    @OneToMany @JoinColumn(name = "user", insertable=false, updatable=false) 
    private Collection<Course> courses; 

//... 
} 

@Entity 
public class Course implements Serializable{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long courseId; 

    @Column(name = "coursename") 
    private String courseName; 

    @Column(name = "duration") 
    private int duration; 

    @Column(name = "description") 
    private String description; 

    @ManyToOne @JoinColumn(name="myuserId", insertable=false, updatable = false) 
    private Myuser user; 

    @OneToMany @JoinColumn(name ="course", insertable=false, updatable = false) 
    private Collection<Mymodule> modules; 

//... 
} 

而且我得到了這臺服務器數據庫的日誌信息:

Avertissement: Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLSyntaxErrorException: Erreur de syntaxe : Encountered "user" at line 1, column 134. 
Error Code: -1 
Call: CREATE TABLE COURSE (COURSEID BIGINT NOT NULL, coursename VARCHAR(255), description VARCHAR(255), duration INTEGER, myuserId BIGINT, user BIGINT, PRIMARY KEY (COURSEID)) 
Query: DataModifyQuery(sql="CREATE TABLE COURSE (COURSEID BIGINT NOT NULL, coursename VARCHAR(255), description VARCHAR(255), duration INTEGER, myuserId BIGINT, user BIGINT, PRIMARY KEY (COURSEID))") 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:679) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1995) 
    at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:570) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:271) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:251) 
    at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:85) 
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:3207) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1797) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1779) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1730) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.priviledgedExecuteNonSelectingCall(AbstractSession.java:5000) 
    at org.eclipse.persistence.tools.schemaframework.DatabaseObjectDefinition.createOnDatabase(DatabaseObjectDefinition.java:141) 
    at org.eclipse.persistence.tools.schemaframework.SchemaManager.createObject(SchemaManager.java:223) 
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createTables(TableCreator.java:165) 
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createTables(TableCreator.java:142) 
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createTables(TableCreator.java:134) 
    at org.eclipse.persistence.tools.schemaframework.SchemaManager.createDefaultTables(SchemaManager.java:1032) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.generateDefaultTables(EntityManagerFactoryProvider.java:102) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeDDLToDatabase(EntityManagerSetupImpl.java:3937) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeMetadataDDLToDatabase(EntityManagerSetupImpl.java:3992) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeDDL(EntityManagerSetupImpl.java:3903) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeDDL(EntityManagerSetupImpl.java:3783) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:724) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:182) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getDatabaseSession(EntityManagerFactoryImpl.java:527) 
    at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactory(PersistenceProvider.java:358) 
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:199) 
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:107) 
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:223) 
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510) 
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:230) 
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:922) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:431) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:356) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) 
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: java.sql.SQLSyntaxErrorException: Erreur de syntaxe : Encountered "user" at line 1, column 134. 
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source) 
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) 
    at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source) 
    at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:586) 
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:255) 
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:52) 
    at com.sun.gjc.spi.ManagedConnectionImpl.prepareCachedStatement(ManagedConnectionImpl.java:992) 
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareStatement(ConnectionWrapper40.java:173) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1551) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1500) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:778) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:619) 
    ... 71 more 
Caused by: org.apache.derby.client.am.SqlException: Erreur de syntaxe : Encountered "user" at line 1, column 134. 
    at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source) 
    at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown Source) 
    at org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown Source) 
    at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source) 
    at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source) 
    at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown Source) 
    at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.prepare(Unknown Source) 
    at org.apache.derby.client.am.Connection.prepareStatementX(Unknown Source) 
    ... 81 more 
+0

在大多數dbs中,「用戶」是關鍵字。所以,如果你的用戶名是你的名字,那麼你應該可以創建另外一個名字,比如'Entity(name =「user_table」)' – SRy

回答

2

它看起來像列「用戶」是問題。 「USER」是reserved word in Derby,因此應該不能用作列名。如果您必須將其用作列名,請確保將其用引號括起來,如question所示。

+0

並且他們說C是非常危險的,因爲宏和東西。 。 – user4052054

0

我猜'用戶'是一個數據庫關鍵字,不能使用!您必須將您的映射更改爲使用不同的列名稱。