我是新來的休眠我創建了表和映射,我使用下面的代碼列出我的表中的所有行。休眠查詢一對一的關係
List places = session.createQuery("FROM Place").list();
for (Iterator iterator = places.iterator(); iterator.hasNext();) {
Place place = (Place) iterator.next();
System.out.println("-" + place.getName());
}
此代碼工作正常但是,地方臺與地址表中的一比一的關係,而這種代碼返回空值在地址表中的所有行,並打印出:
-null
-null
-null
-343
-223
-122
我只想要來自PLACES表的行。我怎樣才能管理這個?
重要提示:在Pierre-Henri Toussaint的回答之後,我注意到了生成的sql。休眠首先從地方產生從地址選擇查詢,然後選擇查詢(當我約束值更改爲false它產生於各行的查詢地址表)
Address.hbm.xml:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.places.general.Address" table="ADDRESS" schema="dbo">
<id name="placeId" type="java.lang.Integer">
<column name="PLACE_ID" />
<generator class="foreign">
<param name="property">place</param>
</generator>
</id>
<one-to-one name="place" class="com.places.general.Place"
constrained="true">
</one-to-one>
<property column="PLACE_ADDRESS" length="250" name="placeAddress" type="java.lang.String"/>
<property column="PHONE" length="50" name="phone" type="java.lang.String"/>
</class>
</hibernate-mapping>
Place.hbm.xml:
<?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>
<class name="com.places.general.Place" table="PLACES" schema="dbo">
<id column="ID" name="id" type="java.lang.Integer">
<generator class="identity"/>
</id>
<property column="NAME" length="100" name="name" not-null="true" type="java.lang.String"/>
<property column="DETAILS" length="200" name="details" type="java.lang.String"/>
</class>
</hibernate-mapping>
Place.java:
import java.io.Serializable;
public class Place implements Serializable{
private Integer id;
private String name;
private String details;
public Place() {
}
public Place(String name, String details) {
this.name = name;
this. details = details;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this. details = details;
}
}
你可以發佈你的實體和place.hbm.xml文件嗎? – mstzn
我更新了我的帖子 – irmu