Дублирующее имя схемы в генерации последовательности

Чтобы предотвратить использование атрибута схемы в аннотации таблицы для всех моих сущностей, я задаю имя схемы по умолчанию с помощью schema.xml:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
    version="2.0">
      <persistence-unit-metadata>
        <persistence-unit-defaults>
            <schema>X</schema>
        </persistence-unit-defaults>
    </persistence-unit-metadata>   
</entity-mappings>

И я установил его как файл сопоставления в файле persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="SayHello-ejbPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/SayHello</jta-data-source>
    <mapping-file>META-INF/schema.xml</mapping-file>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

Определение идентификатора в моей организации:

@Entity
@SequenceGenerator( name = "SEQ_Y", sequenceName = "SEQ_Y" )
public class Y implements Serializable
{
  @Id
  @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "SEQ_Y" )
  private int id;
  ...
}

Когда я пытаюсь развернуть приложение, я получаю следующее сообщение об ошибке:

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: SEQUENCE 'X.X' does not exist.

Error Code: -1
Call: VALUES(NEXT VALUE FOR X.X.SEQ_Y)
Query: ValueReadQuery(sql="VALUES(NEXT VALUE FOR X.X.SEQ_Y)")

Имя схемы (X) продублировано в инструкции SQL. Как я мог это исправить?

Я прочитал кое-что о "TableSequence.java" на форуме Eclipse. (https://www.eclipse.org/forums/index.php/t/798163/) А что это? Где это?

То же самое с @TableGenerator:

@Entity
@TableGenerator(
  name = "GEN_Y",
  table = "ID_GENERATOR", 
  pkColumnName = "GEN_KEY", 
  pkColumnValue = "GEN_Y", 
  valueColumnName = "GEN_VALUE" )
)

public class Y implements Serializable
{
  @Id
  @GeneratedValue( strategy = GenerationType.TABLE, generator = "GEN_Y" )
  private int id;
  ...
}

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Syntax error: Encountered "." at line 1, column 17.
Error Code: -1
Call: CREATE TABLE X.X.ID_GENERATOR (GEN_KEY VARCHAR(50) NOT NULL, GEN_VALUE DECIMAL(15), PRIMARY KEY (GEN_KEY))

Ответы на вопрос(0)

Ваш ответ на вопрос