Почему последовательность называют, hibernate_sequence, создаваемые с использованием JPA, в спящем режиме с диалектом 10 г Oracle?

Все мои объекты используют этот тип @Id

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYENTITY_SEQ")
@SequenceGenerator(name = "MYENTITY_SEQ", sequenceName = "MYENTITY_SEQ")
@Column(name = "MYENTITY", nullable = false)
private Long id;

или

@Id
@Column(name = "MYENTITY")

Я нахожу, что последовательность Oracle назвала hibernate_sequence всегда создается. Почему это так? И как я могу избежать этого?

Я использую JPA1 с, в спящем режиме 3 и диалект 10 г Oracle.

7
задан Daniel Serodio 6 March 2013 в 17:46
поделиться

2 ответа

Я подозреваю, что это потому, что я использую Hibernate Envers, так как я дважды проверил свои сущности и все они имеют правильные @Id сопоставления.

-3
ответ дан 6 December 2019 в 23:00
поделиться

Я вижу следующий код в org.hibernate.id.SequenceGenerator :

public void configure(Type type, Properties params, Dialect dialect) throws MappingException {
    ObjectNameNormalizer normalizer = ( ObjectNameNormalizer ) params.get( IDENTIFIER_NORMALIZER );
    sequenceName = normalizer.normalizeIdentifierQuoting(
            PropertiesHelper.getString( SEQUENCE, params, "hibernate_sequence" )
    );
    parameters = params.getProperty( PARAMETERS );

    if ( sequenceName.indexOf( '.' ) < 0 ) {
        final String schemaName = normalizer.normalizeIdentifierQuoting( params.getProperty( SCHEMA ) );
        final String catalogName = normalizer.normalizeIdentifierQuoting( params.getProperty( CATALOG ) );
        sequenceName = Table.qualify(
                dialect.quote( catalogName ),
                dialect.quote( schemaName ),
                dialect.quote( sequenceName )
        );
    }
    else {
        // if already qualified there is not much we can do in a portable manner so we pass it
        // through and assume the user has set up the name correctly.
    }

    this.identifierType = type;
    sql = dialect.getSequenceNextValString( sequenceName );
}

Где третий параметр PropertiesHelper.getString (String, Properties, String) является значением по умолчанию стоимость имущества.

Так что я хочу сказать, что где-то у вас есть Id , не "должным образом" аннотированный. Возможно, вам стоит провести небольшой сеанс отладки.

4
ответ дан 6 December 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: