#oracle #jpa #sequence #eclipselink
#Oracle #jpa #последовательность #eclipselink
Вопрос:
У меня есть следующий объект JPA:
@Entity
@Table(schema = "myschema")
@SequenceGenerator(schema = "myschema", name = "seqGenerator",
sequenceName = "person_s1", allocationSize = 1)
public class Person {
@Id
@GeneratedValue(generator = "seqGenerator", strategy = GenerationType.AUTO)
private long id;
генерируются следующие исключения:
Call: DROP SEQUENCE myschema.person_s1
Query: DataModifyQuery(sql="DROP SEQUENCE myschema.person_s1")
[EL Warning]: 2010-11-01 17:21:51.051--ServerSession(10605044)--Exception [EclipseLink- 4002] (Eclipse Persistence Services - 2.1.1.v20100817-r8050):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-02289: sequence does not exist
Error Code: 2289
Call: SELECT myschema.person_s1.NEXTVAL FROM DUAL
Query: ValueReadQuery(sql="SELECT myschema.person_s1.NEXTVAL FROM DUAL")
Последовательность генерируется EclipseLink и запросом:
SELECT myschema.person_s1.NEXTVAL FROM DUAL
при непосредственном использовании работает нормально…
Приветствуется любая помощь
С уважением, Марсель
Ответ №1:
генерируются следующие исключения (…)
Эти трассировки генерируются во время создания схемы, когда конкретный объект базы данных не существует и, следовательно, не может быть удален. EclipseLink сообщает о таких случаях, как Warning
(которых нет Error
), их можно игнорировать (вы получаете свою последовательность, верно?).
PS: Почему вы используете размер выделения 1, разве вы не хотите извлечь выгоду из оптимизации high / low?
Комментарии:
1. Merci beaucoup Pascal. Что такое оптимизация с высоким / низким уровнем? Не могли бы вы написать мне об этом? Марсель
2. FWIW Я зарегистрировал это как ошибку в EclipseLink: bugs.eclipse.org/bugs/show_bug.cgi?id=487795 . Мотивация для того, чтобы назвать это ошибкой, содержится в отчете об ошибке.
Ответ №2:
Я знаю, что это будет звучать действительно глупо, но в любом случае это так.
@Entity
@Table(schema = "myschema")
public class Person {
@Id
@SequenceGenerator(schema = "myschema", name = "seqGenerator", sequenceName = "person_s1", allocationSize = 1)
@GeneratedValue(generator = "seqGenerator", strategy = GenerationType.AUTO)
private Long id;
}