Ich habe zwei Tabellen zusammen mit eins-zu-viele Beziehung: Mitarbeiter -> Abteilung: und Beziehung durch department_id in der Mitarbeiter-Tabelle.Hibernate ändern Fetch-Modus in der Laufzeit
Ich benutze Hibernate und meine Hibernate Mapping-Dateien sind:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping default-lazy="false">
<class catalog="moi"
name="com.ebla.moi.correspondence.model.entity.user.User" table="user">
<id name="id" type="java.lang.Long">
<column name="id"/>
<generator class="identity"/>
</id>
<many-to-one
class="com.ebla.moi.correspondence.model.entity.department.Department"
fetch="select" name="department">
<column name="department_id"/>
</many-to-one>
<property generated="never" lazy="false" name="name" type="java.lang.String">
<column length="128" name="name" not-null="true"/>
</property>
<property generated="never" lazy="false" name="email" type="java.lang.String">
<column length="128" name="email" not-null="true" unique="true"/>
</property>
<property generated="never" lazy="false" name="maritalStatus" type="java.lang.Short">
<column name="marital_status" not-null="true"/>
</property>
<property generated="never" lazy="false" name="hireDate" type="java.lang.String">
<column length="64" name="hire_date"/>
</property>
</class>
</hibernate-mapping>
und die zweite Zuordnungsdatei ist:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping default-lazy="false">
<class catalog="moi"
name="com.ebla.moi.correspondence.model.entity.department.Department" table="department">
<id name="id" type="java.lang.Long">
<column name="id"/>
<generator class="identity"/>
</id>
<property generated="never" lazy="false" name="name" type="java.lang.String">
<column length="256" name="name" unique="true"/>
</property>
<set inverse="true" name="users" sort="unsorted">
<key>
<column name="department_id"/>
</key>
<one-to-many class="com.ebla.moi.correspondence.model.entity.user.User"/>
</set>
</class>
</hibernate-mapping>
Mein Problem ist: Manchmal muss ich dem Mitarbeiter seiner Abteilung bekommen und zu anderen Zeiten brauche ich nur die Mitarbeiterinformationen ohne Abteilungsinformationen ..... und das gleiche mit Abteilung mit Mitarbeiter .... mit der Mapping-Datei über den Winterschlaf bringen die Abteilung und es ist Benutzer, wenn ich den Mitarbeiter brauche oder nicht ... wie ich meinen Bedarf zum Winterschlaf definieren kann ätzen genau das, was ich brauche ...
danke
Es funktioniert nicht für mich. Es ruft weiterhin die verknüpften Entitäten ab, verwendet jedoch keine Join-Klausel. Stattdessen ruft es eine andere Select-Anweisung auf. – supertonsky