Application de l'attribut de filtre Hibernate à un sac avec une relation plusieurs à plusieurs

StackOverflow https://stackoverflow.com/questions/421075

Question

Considérez le fichier de correspondance Hibernate suivant:

<hibernate-mapping ...>
<class name="ContentPackage" table="contentPackages">
    <id name="Id" column="id" type="int"><generator class="native" /></id>
    ...
    <bag name="Clips" table="contentAudVidLinks">
      <key column="fk_contentPackageId"></key>
      <many-to-many class="Clip" column="fk_AudVidId"></many-to-many>
      <filter name="effectiveDate" condition=":asOfDate BETWEEN startDate and endDate"  />
    </bag>
</class>
</hibernate-mapping>

Lorsque j'exécute la commande suivante:

  _session.EnableFilter("effectiveDate").SetParameter("asOfDate", DateTime.Today);

  IList<ContentPackage> items = _session.CreateCriteria(typeof(ContentPackage))
                                     .Add(Restrictions.Eq("Id", id))
                                     .List<ContentPackage>();

Le code SQL résultant contient la clause WHERE sur la table de mappage intermédiaire (contentAudVidLinks), plutôt que & "Clips &"; table même si j’ai ajouté l’attribut filter au sac de clips.

Qu'est-ce que je fais de travers?

Était-ce utile?

La solution

Je l'ai compris. Pour ceux que ça intéresse, j'avais mon <filter> attribut au mauvais endroit:

Avant:

<bag name="Clips" table="ctv_bb_contentAudVidLinks">
  <key column="fk_contentPackageId"></key>
  <many-to-many class="Clip" column="fk_AudVidId"></many-to-many>
  <filter name="effectiveDate" condition=":asOfDate BETWEEN startDate and endDate" />
</bag>

Après:

<bag name="Clips" table="ctv_bb_contentAudVidLinks">
  <key column="fk_contentPackageId"></key>
  <many-to-many class="Clip" column="fk_AudVidId">
    <filter name="effectiveDate" condition=":asOfDate BETWEEN startDate and endDate" />
  </many-to-many>
</bag>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top