последовательность не существует исключение, используя eclipseLink с оракулом дБ - PullRequest
3 голосов
/ 01 ноября 2010

У меня есть следующий объект 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

отлично работает при непосредственном использовании ...

Любая помощь приветствуется

С уважением, Марсель

Ответы [ 2 ]

3 голосов
/ 02 ноября 2010

выбрасываются следующие исключения (...)

Эти трассировки генерируются во время создания схемы, когда конкретный объект базы данных не существует и, следовательно, не может быть удален. EclipseLink сообщает о таких случаях, как Warning (которые не Error), их можно игнорировать (вы понимаете свою последовательность, верно?).

PS: Почему вы используете размер распределения 1, не хотите ли вы извлечь выгоду из оптимизации высокого / низкого уровня?

0 голосов
/ 01 ноября 2010

Я знаю, что это будет звучать очень глупо, но здесь все равно.

@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;
}
...