Hello, Vous êtes mon dernier recours ^^ j'espère que quelqu'un pourra m'éclairer.
Je suis en train d'optimiser mon applic et je suis tombé sur un problème que je n'arrive pas à résoudre...
Soit ce mapping pour Phone:
Code:
...
<class name="Phone" table="ACTOR_PHONE">
<id name="id" column="ID" type="long">
<generator class="native">
<param name="sequence">PH_SEQUENCE</param>
</generator>
</id>
<many-to-one name="actor" class="Actor" column="ACTOR_ID"
not-null="true" foreign-key="ACT_PH_FK"/>
<many-to-one name="declaration" column="DECLARATION_ID"
class="be.xxx.yyy.core.data.model.file.Declaration"
foreign-key="DECL_PH_FK" />
...
Celui qui se trouve dans Actor:
Code:
<set name="phones" inverse="true" cascade="all-delete-orphan">
<key column="actor_id" />
<one-to-many class="Phone" />
</set>
J'écris un test unitaire et je l'exécute avec le show_sql à true juste pour voir
Code:
Actor actor = (Actor) this.commonDao.get(Actor.class,
new long(78581));
actor.getPhones().iterator;
bon, le test est bizarre mais c'est ciblé, je sais qu'en faisant 'actor.getPhones().iterator;' je reproduis le problème donc pas besoin d'aller plus loin ;p
Et le problème c'est, que qd je fais ça il me génère ceci comme SQL:
Code:
Hibernate: select phones0_.actor_id as actor2_1_, phones0_.ID as ID1_, phones0_.ID as ID12_0_, phones0_.ACTOR_ID as ACTOR2_12_0_, phones0_.DECLARATION_ID as DECLARAT3_12_0_, phones0_.COUNTRY_CODE as COUNTRY4_12_0_, phones0_.PHONE_NUM as PHONE5_12_0_, phones0_.PHONE_CODE as PHONE6_12_0_, phones0_.START_DATE as START7_12_0_, phones0_.END_DATE as END8_12_0_ from ACTOR_PHONE phones0_ where phones0_.actor_id=?
Hibernate: select declaratio0_.FILE_ID as ID25_0_, declaratio0_1_.FILE_TYPE_CODE as FILE2_25_0_, declaratio0_1_.INTEGRATED_FILE_ID as INTEGRATED3_25_0_, declaratio0_1_.STATUS_FCH_TYPE_CODE as STATUS4_25_0_, declaratio0_1_.START_DATE as START5_25_0_, declaratio0_1_.END_DATE as END6_25_0_, declaratio0_.DECLARATION_NUM as DECLARAT2_31_0_, declaratio0_.PROJ_TYPE_CODE as PROJ3_31_0_, declaratio0_.BUILD_START_DATE as BUILD4_31_0_, declaratio0_.BUILD_END_DATE as BUILD5_31_0_, declaratio0_.STREET_LNM as STREET6_31_0_, declaratio0_.STREET_NUM as STREET7_31_0_, declaratio0_.STREET_BOX_SHN as STREET8_31_0_, declaratio0_.POSTCODE as POSTCODE31_0_, declaratio0_.CITY_LNM as CITY10_31_0_, declaratio0_.ORDERER_PHYSICAL_IND as ORDERER11_31_0_, declaratio0_.FICTION_IND as FICTION12_31_0_, declaratio0_.REGISTER_NUM as REGISTER13_31_0_, declaratio0_.COMP_INFOS_DESC as COMP14_31_0_, declaratio0_.MOBIL_IND as MOBIL15_31_0_ from FILE_DECLARATION declaratio0_ inner join FILES declaratio0_1_ on declaratio0_.FILE_ID=declaratio0_1_.ID where declaratio0_.FILE_ID=?
La première requête ok mais la seconde ne devrait pas être exécutée car je n'accède pas à la déclaration et que celle-ci est normalement 'proxyfiée'...! où y'a un truc qui m'échappe? :-)
donc voila, si quelqu'un a un idée... :-)
Merci