, , -ref Attribute
,
, To false
<?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">
<hibernate-mapping package="br.com.ar">
<class name="Aa" table="A">
<id name="id">
<generator class="native"/>
</id>
</class>
<class name="Bb" table="B">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="aa" column="A_ID" class="Aa"/>
</class>
<class name="Cc" table="C">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="aa" column="A_ID" class="Aa"/>
<bag name="bbList" table="B" mutable="false">
<key column="A_ID" property-ref="aa"/>
<one-to-many class="Bb"/>
</bag>
</class>
</hibernate-mapping>
br.com.ar.Aa
public class Aa {
private Integer id;
}
br.com.ar.Bb
public class Bb {
private Integer id;
private Aa aa;
}
br.com.ar.Cc
public class Cc {
private Integer id;
private Aa aa;
private Collection<Bb> bbList = new ArrayList<Bb>();
}
,
query = new StringBuilder().append("SELECT ")
.append("{cc.*} ")
.append("from ")
.append("C cc ")
.append("where ")
.append("cc.id = 1 ")
.toString();
, Bb. ,
, NATIVE SQL Cc. . , , BbList. , - , (Notice fetch = "select" lazy = "false" )
<class name="Cc" table="C">
...
<bag name="bbList" table="B" mutable="false" fetch="select" lazy="false">
<key column="A_ID" property-ref="aa"/>
<one-to-many class="Bb"/>
</bag>
</class>
fetch = "select" select. " " " " (bbList, ???) fetch , , . lazy = "true", , lazy = "false", Hibernate SQL SELECT.
query = new StringBuilder().append("SELECT ")
.append("{cc.*} ")
.append("from ")
.append("C cc ")
.append("where ")
.append("cc.id in (1,2) ")
.toString();
org.hibernate.HibernateException: -
???
Cc bbList A_ID, property-ref, right???
<class name="Cc" table="C">
...
<bag name="bbList" table="B" mutable="false" fetch="select" lazy="false">
<key column="A_ID" property-ref="aa"/>
<one-to-many class="Bb"/>
</bag>
</class>
, A_ID , . aa , . ,
List<Cc> resultList = new ArrayList<Cc>();
for (Integer id : new Integer[] {1, 2}) {
query = new StringBuilder().append("SELECT ")
.append("{cc.*} ")
.append("from ")
.append("C cc ")
.append("where ")
.append("cc.id = :id ")
.toString();
resultList.addAll(
session.createSQLQuery(query)
.addEntity("cc", Cc.class)
.setParameter("id", id)
.list());
}
JDBC-