- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任何人都可以解释为什么我会收到此错误(下面的完整堆栈跟踪):
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE = innodb' at line 1** {stmnt 763763032 CREATE TABLE ADMIN_USER (admin_id BIGINT NOT NULL AUTO_INCREMENT, first_name VARCHAR(255), last_name VARCHAR(255), user_name VARCHAR(255), PRIMARY KEY (admin_id)) TYPE = innodb} [code=1064, state=42000]*
我有一个 Web 应用程序,使用 MySQL 5.5.11
和 openJPA 1.2.2
以及 Geronimo 2.2.1 with Tomcat 6
。我能够很好地分解 .ear
。但是当我提交我的表单以保留 Admin @Entity
时,我收到上面的以下错误。
另外,我使用 tranql-connector-mysql-local-1.5.rar
(来自 Geronimo 存储库)作为我的连接器。
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<persistence-unit name="AReyesPersistUnit" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>AReyesMySql</jta-data-source>
<class>com.areyes.entity.Admin</class>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
</properties>
</persistence-unit>
</persistence>
@Entity
@Table (name="ADMIN_USER")
public class Admin implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
@Column (name="admin_id")private long id;
@Column (name="user_name")private String userName;
@Column (name="first_name")private String firstName;
@Column (name="last_name")private String lastName;
...后跟 getter/setter
2011-06-30 23:15:52,203 ERROR [[AddAdmin]] Servlet.service() for servlet AddAdmin threw exception
javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is:
<openjpa-1.2.2-r422266:898935 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE = innodb' at line 1 {stmnt 1243851750 CREATE TABLE ADMIN_USER (admin_id BIGINT NOT NULL AUTO_INCREMENT, first_name VARCHAR(255), last_name VARCHAR(255), user_name VARCHAR(255), PRIMARY KEY (admin_id)) TYPE = innodb} [code=1064, state=42000]
at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:359)
at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:287)
at $Proxy65.create(Unknown Source)
at com.areyes.servlet.AddAdmin.doPost(AddAdmin.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:420)
at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:396)
at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:214)
at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:344)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: <openjpa-1.2.2-r422266:898935 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE = innodb' at line 1 {stmnt 1243851750 CREATE TABLE ADMIN_USER (admin_id BIGINT NOT NULL AUTO_INCREMENT, first_name VARCHAR(255), last_name VARCHAR(255), user_name VARCHAR(255), PRIMARY KEY (admin_id)) TYPE = innodb} [code=1064, state=42000]
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:553)
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createEntityManager(CMPEntityManagerTxScoped.java:74)
at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.getEntityManager(CMPEntityManagerTxScoped.java:55)
at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.persist(CMPEntityManagerTxScoped.java:81)
at com.areyes.session.AdminManager.create(AdminManager.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:162)
at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:144)
at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:164)
at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:162)
at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:144)
at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:122)
at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:221)
at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:174)
at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:282)
... 23 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE = innodb' at line 1 {stmnt 1243851750 CREATE TABLE ADMIN_USER (admin_id BIGINT NOT NULL AUTO_INCREMENT, first_name VARCHAR(255), last_name VARCHAR(255), user_name VARCHAR(255), PRIMARY KEY (admin_id)) TYPE = innodb} [code=1064, state=42000]
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57)
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingStatement.executeUpdate(LoggingConnectionDecorator.java:762)
at org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1191)
at org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:949)
at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:526)
at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
... 54 more
最佳答案
经过大量挖掘,这是一个 bug that has already been fixed .根本问题是 MySQL 在 5.1ish 时间范围内将 table_option 'type' 更改为 'engine'。
您可以迁移到更新级别的 OpenJPA(1.3.x、2.0.x 等),或者不使用 OpenJPA 创建表。
关于mysql - org.apache.openjpa.lib.jdbc.ReportingSQLException、MySQL、OpenJPA、Geronimo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544308/
查看在数据库中执行的 SQL 查询的 OpenJPA 配置是什么?我想查看在日志或控制台中执行的所有参数的查询,而不是查看 JPQL 查询 最佳答案 启用所有 SQL 语句的日志记录,减去参数值。
我创建了一个包含一张表的数据库:users DROP DATABASE IF EXISTS DB_TEST; CREATE database DB_TEST; USE DB_TEST; -- ----
任何人都可以解释为什么我会收到此错误(下面的完整堆栈跟踪): Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: You hav
在 Open JPA 注释处理器/maven 插件上收到此警告?有什么问题吗?在另一个项目中我没有收到此警告。 [WARNING] diagnostic: warning: The following
我试图为使用 Apache TomEE Maven 插件开发的 Java Enterprise Web 应用程序编写测试。该应用程序运行良好,一切似乎都正常运行。我考虑使用 JUnit Jupiter
我在使用 SQLite 的 JPA 中遇到此错误,我不知道为什么会出现这种情况,有帮助吗? 我的 persistence.xml: org.apache.openjpa.
我正在尝试将应用程序从 WLP 迁移到 Tomcat,在尝试部署 war 时,出现以下异常 org.apache.openjpa.persistence.ArgumentException:此配置不允
我对 OpenJPA 的一个问题感到头疼。 我有一个方法: public void update() { System.out.println("START: Update...");
OpenJPA 是否支持类似于 Hibernate 的批量插入? ?我没有在文档中找到它,但我希望我错过了它。我知道JPA doesn't support it in general . 最佳答案 简
我在带有 DB2 的 WebSphere 上使用 OpenJPA 1.2.3。有没有一种方法可以构建和捆绑我的应用程序,允许同一应用程序 (EAR) 根据环境(DEV、ACPT、PROD 等)更改架构
OpenJPA 2.3.x 的删除顺序发生错误,我不知道为什么。 鉴于这些 JPA 映射 // grandparent @Entity @Table(name = "three_phase_motor
有没有办法按照它们的顺序获取列 在 Java 类中声明,还是以其他方式指定顺序? 我正在使用映射工具 ant 任务在 sql 文件中为我的类生成 DDL。 最佳答案 不,JPA 的每个实现都可以按照它
我正在使用 TomEE 1.5.2 服务器,我想知道在哪里可以找到 openejb.xml文件? 我必须配置这个文件,就像那里: http://tomee.apache.org/openjpa.htm
我是 OpenJPA 新手我正在尝试将数据插入到一个表中,其中一些数据来自另一个表。下面是场景。 Table1: id, app_name, app_version, app_active Tabl
嗨,我需要使用 and or 条件进行复杂的查询。但 and 条件似乎覆盖了 or 条件,这是我的代码: public List search(CartesioPojo params) { C
我想知道我使用 OpenJpa 2 保存实体的方式是否正确。 我从反序列化的休息服务接收对象,然后保存此实例: 开始交易 从数据库检索实例(即使我已经获得了该实例) 将属性从分离的实例复制到从数据库检
如何将 openjpa 设置为在查询前刷新。当我更改数据库中的某些值时,我想将这些更改传播到应用程序中。 我在 persistence.xml 中试过这个设置: false/true - same
是否可以将以下内容翻译成(Open)JPA? select t0.* from Person t0 left outer join Car t1 on t0.id = t1.id_person and
我正在尝试在现有的 Maven 项目中生成元模型。该项目已经有一些数据源,在生成源中生成了元模型。 我需要将新数据库中的表添加到此应用程序。我为 XML 配置生成了 Java 类和条目。下面的构建日志
我有以下查询方法,但性能较低: @Override public Map getFeatureCounts() { StopWatch timer = new StopWatch();
我是一名优秀的程序员,十分优秀!