J'ai un peu de mal à utiliser Hibernate avec une colonne char (6) dans Oracle. Voici la structure de la table:Hibernation et remplissage sur la colonne de la clé primaire CHAR dans Oracle
CREATE TABLE ACCEPTANCE
(
USER_ID char(6) PRIMARY KEY NOT NULL,
ACCEPT_DATE date
);
Pour les enregistrements dont l'ID utilisateur a moins de 6 caractères, je peux les choisir sans rembourrage l'ID utilisateur lors de l'exécution des requêtes en utilisant mySQreuiL. C'EST À DIRE. ce qui suit renvoie un enregistrement s'il y a un enregistrement avec un identifiant d'utilisateur "abc".
select * from acceptance where user_id = "abc"
Malheureusement, lorsque vous effectuez la sélection via Hibernate (JPA), les rendements suivants null:
em.find(Acceptance.class, "abc");
Si je pad la valeur cependant, il retourne l'enregistrement correct:
em.find(Acceptance.class, "abc ");
Le module sur lequel je travaille obtient l'identifiant de l'utilisateur non protégé d'autres parties du système. Y a-t-il un meilleur moyen de faire fonctionner Hibernate que de mettre du code pour adapter l'identifiant de l'utilisateur à une certaine longueur avant de le donner à Hibernate? (qui pourrait présenter des problèmes d'entretien sur la route si la longueur change)
« si la longueur change jamais ». Si cela se produit, votre clé primaire change et vous avez BEAUCOUP plus de problèmes à s'inquiéter. –