2010-11-01 5 views
3

J'ai l'entité JPA suivante:n'existe pas exception en utilisant EclipseLink avec Oracle db

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

les exceptions suivantes sont lancées:

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") 

La séquence est genrated par EclipseLink et la requête:

SELECT myschema.person_s1.NEXTVAL FROM DUAL 

fonctionne très bien lorsqu'il est directement utilisé ...

Toute aide appréciée

Cordialement Marcel

Répondre

3

les exceptions suivantes sont lancées (...)

Ces traces sont générées lors de la création de schéma lorsqu'un objet de base de données particulière n'existe pas et ne peut donc pas être abandonné. EclipseLink rapport des cas tels que Warning (qui ne sont pas Error), ils peuvent être ignorés (vous obtenez votre séquence, non?). PS: Pourquoi utilisez-vous une taille d'allocation de 1, ne voulez-vous pas bénéficier de l'optimisation haut/bas?

+0

Merci beaucoup Pascal. Quelle est l'optimisation haute/basse? Pourriez-vous me laisser tomber une ligne là-dessus? Marcel –

+0

FWIW Je l'ai enregistré comme un bug dans EclipseLink: https://bugs.eclipse.org/bugs/show_bug.cgi?id=487795. Motivation pour l'appeler un bug est dans le rapport de bug. – peterh

0

Je sais que cela va vous paraître vraiment stupide, mais ici, il est de toute façon.

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