Bonjour,
merci de prendre le temps de regarder mon problème.
Je ne peut pas envoyer mon mapping et mes classe (je sais que c'est pas terrible mais j'ai pas le choix).
Je peux qu'envoyer des exemple de ce qui est fait.
Au niveau mapping j'ai des tables mappées en hbm (pas d'annotations) avec une clef de type :
<composite-id>
<key-property name="IDID_IDPERSONNE" column="IDID_IDPERSONNE" type="java.lang.String" length="10"/>
<key-property name="DATE_EFFET" column="DATE_EFFET" type="java.util.Date" />
<key-property name="DATE_FLU" column="DATE_FLU" type="java.util.Date" />
<key-property name="CODE_SI" column="CODE_SI" type="java.lang.Integer" length="1" />
</composite-id>
plus les colonnes de mes tables.
J'ai d'autres tables qui n'ont pas le même style de clef mais dans toutes on retrouve le IDID_IDPERSONNE et le CODE_SI.
Au niveau classe j'en ai beaucoup qui héritent d'une classe "clef" qui contiens mes 4 propriété et dans ma classe je définis mes autres propriétés.
Pour trouver une ligne à une date donnée, on fais des requêtes de type
SELECT *
FROM tableA A
INNER JOIN tableB B ON A.IDPERSONNE = B.IDPERSONNE AND A.CODE_SI = B.CODE_SI
WHERE A.DATE_EFFET >= :date
AND A.DATE_EFFET = (SELECT MAX(DATE_EFFET)
FROM tableA
WHERE IDID_IDPERSONNE = A.IDID_IDPERSONNE
AND CODE_SI = A.CODE_SI
AND DATE_FLU = (SELECT MAX(DATE_FLU)
FROM tableA WHERE IDID_IDPERSONNE = A.IDID_IDPERSONNE
AND DATE_EFFET = A.DATE_EFFET))
AND B.DATE_EFFET >= :date
AND B.DATE_EFFET = (SELECT MAX(DATE_EFFET)
FROM tableB
WHERE IDID_IDPERSONNE = B.IDID_IDPERSONNE
AND CODE_SI = B.CODE_SI
AND DATE_FLU = (SELECT MAX(DATE_FLU)
FROM tableB WHERE IDID_IDPERSONNE = B.IDID_IDPERSONNE
AND DATE_EFFET = B.DATE_EFFET))
AND A.IDPERSONNE = :idPersonne
AND A.CODE_SI = :codeSi
J'essaye maintenant de faire passer le projet en criteria (toutes les requêtes du projet sont en namedQueries sql dans les hbm ) même les plus simples....
J'essaye donc de faire une migration en criteria mais je sais pas comment retranscrire mes requêtes avec :
INNER JOIN tableB B ON A.IDPERSONNE = B.IDPERSONNE AND A.CODE_SI = B.CODE_SI
Je suis sur un autre problème actuellement donc je n'ai plus les criteria que j'ai essayer de faire en tête mais je sais que j'ai essayé de créé des alias et des jointures et ça marchai pas. (les alias ou les noms de colonnes n'étaient pas reconnu).
Je vais essayer de faire un mapping exemple avec les classes associées.
MERCI.
Partager