Hibernate filters, le filtre ne s'applique pas sur toutes les tables !!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public abstract class AbstractDomain implements java.io.Serializable {
protected Boolean deleted;
public Boolean getDeleted() {
return deleted;
}
public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
} |
//////////////////////////// PROJET 1
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Class PerssonePhysique extends AbstractDomain implements java.io.Serializable{
private Long id;
private String nom;
}
<hibernate-mapping default-cascade="none">
<class name="PersonnePhysique" table="PER_PERSONNE_PHYSIQUE" dynamic-insert="false" dynamic-update="false">
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="PERSONNE_PHYSIQUE_ID" />
<generator class="native">
<param name="sequence">SQ_PERSONNE_PHYSIQUE</param>
</generator>
</id>
<filter name="actifFilter" condition="is_deleted=0" />
</class>
<filter-def name="actifFilter"></filter-def>
</class>
</hibernate-mapping> |
////////////////////////// PROJET 2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Class SituationAdm extends AbstractDomain implements java.io.Serializable{
private Long id;
private Long personneId ;
private PersonnePhysique personneIdPP;
}
<hibernate-mapping default-cascade="none">
<class name="SituationAdm" table="SITUATION_ADM" dynamic-insert="false" dynamic-update="false">
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="SITUATION_ADM_ID" />
<generator class="native">
<param name="sequence">SQ_SITUATION_ADM</param>
</generator>
</id>
<many-to-one name="personneIdPP" class="PersonnePhysique" insert="false" update="false" foreign-key="personneId7733_P" lazy="proxy" fetch="select">
<column name="PERSONNE_ID" />
</many-to-one>
<property name="personneId" index="personneId7733_I" type="java.lang.Long">
<column name="PERSONNE_ID" not-null="true" />
</property>
<filter name="actifFilter" condition="is_deleted=0" />
</class>
<filter-def name="actifFilter"></filter-def>
</hibernate-mapping> |
/////////////////////////////////// SERVICE
Code:
1 2 3 4 5 6 7 8 9 10
| Session session = getSession();
session.enableFilter(ACTIF_FILTER);
String hqlQuery = "SELECT pp, sadm FROM SituationAdm sadm LEFT JOIN sadm.personneIdPP sadm ";
Query query = session.createQuery(hqlQuery);
query.list(); |
////// Resultat SQL :
Code:
1 2 3 4 5
| select * from situation_adm sadm
left join per_personne_physique pp on pp.PERSONNE_PHYSIQUE_ID = sadm.PERSONNE_ID
where sam.is_deleted = 0 ; |
// le filtre s'applique juste sur l'objet SituationAdm ???????????!!!!!!!!!!!!!!