Hello, voilà je viens poster parce que je commence à me prendre sérieusement la tête ^^

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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
...
 
  <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" />
 
...
J'écris un test unitaire et je l'exécute avec le show_sql à true juste pour voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
        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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
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'...!

donc voila, si quelqu'un a un idée... :-)

Merci