хранимая процедура оракула генерирует большие числа в спящем режиме, чем в одиночку - PullRequest
0 голосов
/ 16 декабря 2010

У нас есть хранимая процедура, которая генерирует числа для идентификаторов записей (entry_id_seq). При следующей настройке код генерирует относительно большое число, чем вызывается непосредственно с помощью SQL.

Например, следующий код генерирует число «11195215652» для идентификатора. Но если я запускаю select entry_id_seq.NEXTVAL nv from dual, он возвращает «32350910», что намного меньше.

@javax.persistence.SequenceGenerator(name = "seq",
sequenceName = "entry_id_seq")
public class SomeClassimplements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
    @Column(name = "ID")
    private Long id;

Я попробовал предложение ниже

@javax.persistence.SequenceGenerator(name = "seq",
sequenceName = "entry_id_seq", allocationSize = 1, initialValue= 1)

но выдает следующую ошибку:

Caused by: org.hibernate.HibernateException: increment size cannot be less than 1
    at org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer.<init>(OptimizerFactory.java:336)
    at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:64)
    at org.hibernate.id.factory.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:110)

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Какую версию hibernate вы используете?Если <3.5.3, то установите этот флажок <a href="https://hibernate.onjira.com/browse/HHH-5230" rel="nofollow">https://hibernate.onjira.com/browse/HHH-5230

. Похоже, что он влияет на устаревшие генераторы, в которых allocSize = 1 настроен с аннотациями.

Разрешение: 1. настроить использование новых генераторов, 2. обновить, 3. установить версию вручную.

0 голосов
/ 15 июня 2011

За обсуждение: https://forum.hibernate.org/viewtopic.php?t=973682

решение: в аннотации SequenceGenerator добавьте allocationSize = 1, initialValue= 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...