Ich habe eine Klasse und 2 Many-to-one-Mappings in es, wie kann ich faul Last sieHibernate Many-to-one verzögertes Laden funktioniert nicht
Meine Eigenschaften
**teneo.mapping.also_map_as_class=true
teneo.mapping.set_proxy=true
teneo.mapping.mapping_file_name=/lazy.hbm.xml**
Mapping-Datei (lazy.hbm.xml)
<class name="EnvironmentImpl" entity-name="**Environment**" abstract="false" lazy="true" discriminator-value="Environment" table="`ENVIRONMENT`" proxy="Environment">
<meta attribute="eclassName">Environment</meta>
<property name="name" lazy="false" insert="true" update="true" not-null="true" unique="false" type="java.lang.String">
<column not-null="true" unique="false" name="`NAME`"/>
</property>
<property name="description" lazy="false" insert="true" update="true" not-null="false" unique="false" type="java.lang.String">
<column not-null="false" unique="false" name="`DESCRIPTION`" length="512"/>
</property>
<property name="contact" lazy="false" insert="true" update="true" not-null="false" unique="false" type="java.lang.String">
<column not-null="false" unique="false" name="`CONTACT`"/>
</property>
<many-to-one name="rootAppFolder" entity-name="ApplicationFolder" lazy="proxy" cascade="all" foreign-key="ENVIRONMENT_ROOTAPPFOLDER" insert="true" update="true" not-null="false" unique="true">
<column not-null="false" unique="false" name="`APPLICATINFLDER_RTAPPFOLDER_ID`"/>
</many-to-one>
<many-to-one name="serviceVirtualization" entity-name="ServiceVirtualization" lazy="proxy" cascade="all" foreign-key="ENVIRNMENT_SERVICEVIRTALIZATIN" insert="true" update="true" not-null="false">
<column not-null="false" unique="false" name="`SRVCVRTLZTN_SRVICVIRTLIZTIN_ID`"/>
</many-to-one>
</class>
As you can see class Environment has 2 many-to-one's with names
ApplicationFolder and serviceVirtualization.
for a HQL query like - from Environment where name = :name
Which internally triggers 3 queries
Query1 : Environment (this is right)
Query2 : ApplicationFolder (wrong.lazy loading should not.)
Query 3 : serviceVirtualization (wrong.lazy loading should not.)
DEBUG - select environmen0_."NAME" as NAME4_31_, environmen0_."DESCRIPTION" as DESCRIPT5_31_, environmen0_."CONTACT" as CONTACT6_31_, environmen0_."APPLICATINFLDER_RTAPPFOLDER_ID" as APPLICAT7_31_, environmen0_."SRVCVRTLZTN_SRVICVIRTLIZTIN_ID" as SRVCVRTL8_31_ from "ENVIRONMENT" environmen0_ where environmen0_."NAME"=?
DEBUG - select applicatio0_.e_id as e1_43_0_, applicatio0_.version_ as version3_43_0_, applicatio0_."NAME" as NAME4_43_0_, applicatio0_."ENVIRONMENT_ENV_E_ID" as ENVIRONM5_43_0_ as APPLICAT8_43_0_ from "APPLICATIONFOLDER" applicatio0_ where applicatio0_.e_id=?
DEBUG - select servicevir0_.e_id as e1_35_0_, servicevir0_.version_ as version3_35_0_, servicevir0_.econtainer_class as econtainer4_35_0_, servicevir0_.e_container as e5_35_0_, servicevir0_.e_container_featureid as e6_35_0_ from "SERVICEVIRTUALIZATION" servicevir0_ where servicevir0_.e_id=?
Welche Ansätze ich bisher versucht habe 1) set faul = "kein Proxy", sehe keine Änderung in der Anzahl der Abfragen.
2) Einstellung nicht gefunden = "Ausnahme".
3) Außen-join = „auto“
Kann jemand mir eine Lösung vorschlagen, diese zwei zusätzlichen Abfragen gefeuert wegen der eifrigen viele-zu-eins Beziehungen zu reduzieren?
Bitte notieren Sie sich die Fremdschlüssel-Beziehungen auf Viele-zu-eins.
abgebildet wird kein Standard-Konstruktor oder endgültige Methoden ist, können wir nicht setze faul = "true" auf einem Viele-zu-Eins. org.xml.sax.SAXParseException: Das Attribut "faul" mit dem Wert "true" muss einen Wert aus der Liste "falscher Proxy-Proxy" enthalten. Ich habe versucht "No-Proxy", aber immer noch das Problem des eifrigen Ladens besteht. Alle meine referenzierten Typen hat lazy = "true" – spirit3189
Zugriff auf die Referenzen irgendwo in equals oder gethashcode vielleicht? – Firo
hat dies das Problem gelöst? – rogerdpack