我对 J2EE 很陌生。 我想将一个对象持久保存到我的 MySQL 数据库,但异常与 HyperSQL 相关。
这是我的 persistance.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<persistence-unit name="learnPU">
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/learndb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="xxxxx" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>
以及我的pom文件的依赖项
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.12.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
我从不声明 HyperSQL 连接。
这是堆栈跟踪
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: SEQUENCE
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.SchemaManager.getTable(Unknown Source)
at org.hsqldb.ParserDQL.readTableName(Unknown Source)
at org.hsqldb.ParserDQL.readRangeVariableForDataChange(Unknown Source)
at org.hsqldb.ParserDML.compileUpdateStatement(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 127 more
最佳答案
似乎您必须在应用程序服务器的管理面板/配置文件(取决于您的应用程序服务器)中定义数据源。
所以在我的 TomEE 例子中,你必须在 tomeedir/conf/tomee.xml 中进行
<Resource id="learnDB" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/learndb
UserName root
Password *****
JtaManaged true
</Resource>
并将数据库的 libary jar 文件放入 de/lib 文件夹中。
在 persistance.xml 文件中定义 jta-data-source。这是您的资源 ID 的名称。
<persistence-unit name="learnPU">
<jta-data-source>learnDB</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
关于java - 内部异常 : java. sql.SQLSyntaxErrorException:用户缺乏权限或未找到对象:SEQUENCE 但我使用 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47909922/