Bonjour. J'utilise en ce moment PostGreSQL avec la technologie EJB. Pour des raisons de nomenclature, nous avons des tables et des séquences avec des lettre minuscules et majuscules. Après plusieurs tentatives j'ai réussi à régler X bugs liés à ma mauvaise connaissance de ce SGBR si particulier.
J'ai réussi à régler le problème lié à la nomenclature du catalogue,du schéma et de la table mais le problème concerne la séquence, où Java me fait un mic mac pas possible.
Voici le bout de code qui est utile à connaître:
Comme vous pouvez le constater j'ai rajouté des \" dans la configuration des paramètres de @Table. Ce qui a permis de régler les erreurs du genre crossdatabase et unknow datatable & cie. Mais voilà qu'un autre problème , encore, est apparue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Entity @Table(name = "\"REFERENCE\"", catalog = "\"MachinTruc\"", schema = "\"MachinTruc2\"") @NamedQueries({@NamedQuery(name = "Reference.findAll", query = "SELECT r FROM Reference r"), @NamedQuery(name = "Reference.findByIdReference", query = "SELECT r FROM Reference r WHERE r.idReference = :idReference"), @NamedQuery(name = "Reference.findByNomReference", query = "SELECT r FROM Reference r WHERE r.nomReference = :nomReference"), @NamedQuery(name = "Reference.findByUniteReference", query = "SELECT r FROM Reference r WHERE r.uniteReference = :uniteReference"), @NamedQuery(name = "Reference.findByTypeReference", query = "SELECT r FROM Reference r WHERE r.typeReference = :typeReference")}) public class Reference implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="REFERENCE_SEQUENCE_GENERATOR") @SequenceGenerator(name="REFERENCE_SEQUENCE_GENERATOR",sequenceName="REFERENCE_id_reference_seq") @Column(name = "id_reference") private Integer idReference;
Or il aurait du m'écrire REFERENCE_id_reference_seq sans les guillemets. J'ai l'impression que Java s'arrête à ça @GeneratedValue(strategy=GenerationType.SEQUENCE et ne prend pas en compte la suite puisque le nom de la séquence correspond à NomdelaTable.NomPK.seq au lieu de prendre le nom de la séquence définie dans @SequenceGenerator(name="REFERENCE_SEQUENCE_GENERATOR",sequenceName="REFERENCE_id_reference_seq"). Résultat j'ai des guillemets en trop.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008)) Server: unknown file:/C:/Documents%20and%20Settings/MuMu/Mes%20documents/NetBeansProjects/OK_Web/dist/gfdeploy/OK_Web-ejb_jar/-OK_Web-ejbPU login successful Local Exception Stack: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException Internal Exception: org.postgresql.util.PSQLException: ERROR: invalid name syntax Error Code: 0 Call: select currval('"MachinTruc"."MachinTruc2"."REFERENCE"_id_reference_seq')
Pouvez-vous me donner une solution à ce problème?
MERCI!!
Partager