【问题标题】:Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: SEQUENCE but I use MySQL内部异常:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:SEQUENCE 但我使用 MySQL
【发布时间】:2023-03-20 23:44:01
【问题描述】:

我对 J2EE 很陌生。 我想将一个对象持久化到我的 MySQL 数据库,但异常与 HyperSQL 有关。

这是我的 persistence.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

【问题讨论】:

    标签: java mysql jpa jakarta-ee


    【解决方案1】:

    您似乎必须在应用程序服务器的管理面板/配置文件(取决于您的应用程序服务器)中定义您的数据源。

    所以在我的情况下,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>
    

    然后将你的 DB 的 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>
    

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      相关资源
      最近更新 更多