Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
异常:java.sql.SQLSyntaxErrorException:&x27;飞机识别号';不是表中的列_Java_Eclipse_Jakarta Ee_Ejb_Derby - Fatal编程技术网

异常:java.sql.SQLSyntaxErrorException:&x27;飞机识别号';不是表中的列

异常:java.sql.SQLSyntaxErrorException:&x27;飞机识别号';不是表中的列,java,eclipse,jakarta-ee,ejb,derby,Java,Eclipse,Jakarta Ee,Ejb,Derby,我正在使用EJB和JPA开发一个JavaEE应用程序 以下是我的资料来源: 飞行实体: package com.airline.models; 导入java.io.Serializable; 导入java.util.Date; 导入javax.persistence.*; /** *实体的实体实现类:Flight * */ @实体 公共类航班实现可序列化{ 私有静态最终长serialVersionUID=1L; 公共航班(){ 超级(); } @Id() @GeneratedValue(策略=G

我正在使用EJB和JPA开发一个JavaEE应用程序

以下是我的资料来源:

飞行实体:
package com.airline.models;
导入java.io.Serializable;
导入java.util.Date;
导入javax.persistence.*;
/**
*实体的实体实现类:Flight
*
*/
@实体
公共类航班实现可序列化{
私有静态最终长serialVersionUID=1L;
公共航班(){
超级();
}
@Id()
@GeneratedValue(策略=GenerationType.AUTO)
私有整数id;
@枚举(EnumType.STRING)
私人航班目的地航班目的地;
@枚举(EnumType.STRING)
私人航班目的地航班始发地;
私人整数价格;
@时态(TemporalType.TIMESTAMP)
私人日期飞行时间;
@奥内托内
@JoinColumn(name=“飞机id”)
私人飞机;
公共飞机getAirplaneDetail(){
返回飞机尾部;
}
@凌驾
公共字符串toString(){
返回“Flight[id=“+id+”,flightdestination=“+flightdestination+”,flightorigin=“+flightorigin
+,price=“+price+”,flighttime=“+flighttime+”];
}
//接球手和接球手
}
飞机实体:
公共类飞机实现可序列化{
私有静态最终长serialVersionUID=1L;
公共飞机(){
超级();
}
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“id”)
私有整数id;
私人飞机制造;
私有字符串模型名;
专用整数seatCapacity;
@OneTONE(mappedBy=“airplaneDetail”)
私人航班详情;
//接球手和接球手
}
尝试添加航班时出错。以下是完整的堆栈跟踪:

2019-09-22T12:06:21.447+0530|Warning: StandardWrapperValve[com.airline.controllers.AddFlight]: Servlet.service() for servlet com.airline.controllers.AddFlight threw exception
javax.ejb.EJBException: Transaction aborted
    at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:705)
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:483)
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4576)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2084)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2054)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:196)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:64)
    at com.sun.proxy.$Proxy251.addFlight(Unknown Source)
    at com.airline.service.__EJB31_Generated__FlightService__Intf____Bean__.addFlight(Unknown Source)
    at com.airline.controllers.AddFlight.doGet(AddFlight.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1540)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:119)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:550)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:75)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:114)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:199)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:439)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:144)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:515)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javax.transaction.RollbackException: Transaction marked for rollback.
    at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:466)
    at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:830)
    at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:699)
    ... 39 more
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.4.v20190115-ad5b7c6b2a): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: 'AIRPLANE_ID' is not a column in table or VTI 'ADMIN.FLIGHT'.
Error Code: 20000
Call: INSERT INTO FLIGHT (ID, FLIGHTDESTINATION, FLIGHTORIGIN, FLIGHTTIME, PRICE, airplane_id) VALUES (?, ?, ?, ?, ?, ?)
    bind => [6 parameters bound]
Query: InsertObjectQuery(Flight [id=301, flightdestination=Dubai, flightorigin=Kochi, price=500, flighttime=Tue Jan 22 10:30:21 IST 2019])
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl$1.handleException(EntityManagerSetupImpl.java:784)
    at org.eclipse.persistence.transaction.AbstractSynchronizationListener.handleException(AbstractSynchronizationListener.java:277)
    at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:172)
    at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:70)
    at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:428)
    ... 41 more
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.4.v20190115-ad5b7c6b2a): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: 'AIRPLANE_ID' is not a column in table or VTI 'ADMIN.FLIGHT'.
Error Code: 20000
Call: INSERT INTO FLIGHT (ID, FLIGHTDESTINATION, FLIGHTORIGIN, FLIGHTTIME, PRICE, airplane_id) VALUES (?, ?, ?, ?, ?, ?)
    bind => [6 parameters bound]
Query: InsertObjectQuery(Flight [id=301, flightdestination=Dubai, flightorigin=Kochi, price=500, flighttime=Tue Jan 22 10:30:21 IST 2019])
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:342)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:691)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:567)
    at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2096)
    at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:311)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:275)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:261)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:411)
    at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:167)
    at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:182)
    at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:504)
    at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:82)
    at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:92)
    at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:316)
    at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:60)
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:914)
    at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:813)
    at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:110)
    at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:87)
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2981)
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1895)
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1877)
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1827)
    at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:229)
    at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsForClassWithChangeSet(CommitManager.java:196)
    at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:141)
    at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:4387)
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1493)
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1583)
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3258)
    at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:357)
    at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:160)
    ... 43 more
Caused by: java.sql.SQLSyntaxErrorException: 'AIRPLANE_ID' is not a column in table or VTI 'ADMIN.FLIGHT'.
    at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    at org.apache.derby.client.am.ClientConnection.prepareStatement(Unknown Source)
    at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:562)
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:231)
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:28)
    at com.sun.gjc.spi.ManagedConnectionImpl.prepareCachedStatement(ManagedConnectionImpl.java:968)
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareStatement(ConnectionWrapper40.java:149)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1595)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1544)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:806)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:628)
    ... 73 more
Caused by: ERROR 42X14: 'AIRPLANE_ID' is not a column in table or VTI 'ADMIN.FLIGHT'.
    at org.apache.derby.client.am.ClientStatement.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.ClientStatement.readPrepareDescribeOutput(Unknown Source)
    at org.apache.derby.client.am.ClientPreparedStatement.readPrepareDescribeInputOutput(Unknown Source)
    at org.apache.derby.client.am.ClientPreparedStatement.flowPrepareDescribeInputOutput(Unknown Source)
    at org.apache.derby.client.am.ClientPreparedStatement.prepare(Unknown Source)
    at org.apache.derby.client.am.ClientConnection.prepareStatementX(Unknown Source)
    ... 83 more

请有人帮我找出这里出了什么问题吗?

如果您仔细查看导致异常的原因,请查看错误堆栈跟踪:

Caused by: java.sql.SQLSyntaxErrorException: 'AIRPLANE_ID' is not a column in table or VTI 'ADMIN.FLIGHT'.
在您的飞行实体中,您似乎正试图通过飞机ID加入:

@JoinColumn(name = "airplane_id")
但飞机实体中没有具有该名称的字段

这就是为什么会出现此异常

如果您试图在飞机实体类中加入id字段,则应在飞行实体中指定此字段:

或者根本不指定@Joincolumn名称属性(JPA将在飞机实体中使用默认的@Id字段)


希望这能解决您的问题。

如果您仔细查看导致异常的原因,请查看错误堆栈跟踪:

Caused by: java.sql.SQLSyntaxErrorException: 'AIRPLANE_ID' is not a column in table or VTI 'ADMIN.FLIGHT'.
在您的飞行实体中,您似乎正试图通过飞机ID加入:

@JoinColumn(name = "airplane_id")
但飞机实体中没有具有该名称的字段

这就是为什么会出现此异常

如果您试图在飞机实体类中加入id字段,则应在飞行实体中指定此字段:

或者根本不指定@Joincolumn名称属性(JPA将在飞机实体中使用默认的@Id字段)


希望这能解决您的问题。

Oops,我的另一个实体是飞机和相应的实体classpackage com.airline.models;公共类飞机实现可序列化的{private static final long serialVersionUID=1L;公共飞机(){super();}@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name=“Id”)私有整数Id;私有字符串planeMake;私有字符串modelName;私有整数seatCapacity;@OneToOne(mappedBy=“airplaneDetail”)private Flight flightDetail;已编辑您的问题以使其更具可读性:)哦,我的另一个实体是飞机和相应的实体classpackage com.airline.models;公共类飞机实现可序列化的{private static final long serialVersionUID=1L;公共飞机(){super();}@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name=“Id”)private Integer Id;private String planeMake;private String modelName;private Integer seatCapacity;@OneToOne(mappedBy=“airplanedeail”)private flightDetail;已编辑您的问题以使其更具可读性:)