Внутреннее исключение: java.sql.SQLSyntaxErrorException: пользователю не хватает привилегии или объект не найден: SEQUENCE, но я использую MySQL

0

Я очень новичок в J2EE. Я хочу сохранить объект для моего MySQL db, но исключение связано с 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.

Это stacktrace

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
Теги:
jpa
java-ee

1 ответ

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>

И отбросьте файл библиотеки libary вашей базы данных в папке /lib.

В файле persistance.xml вы определяете источник jta-data. Какое имя вашего идентификатора ресурса.

 <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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню