hibernate 视图 复合主键的问题
zy155 2006-07-03 10:46:15 在hibernate视图中定义复合主键,出现:查询时检索到数据,但是数据没有返回到pojo的奇怪现象。
log.debug(hql); // hql="from ResPortInfor"
Query query = session.createQuery(hql);// hibernate把hql翻译成的sql,可以检索到数据
lis = query.list(); // lis.size();是正确的,但是query里的数据全部是null
ResPortInforId id = null;
for(Iterator it = lis.iterator();it.hasNext();){
ResPortInfor re = (ResPortInfor)it.next(); // re = NULL
id = new ResPortInforId();
id = re.getComId();
}
<?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="com.zoom.emv.pojo">
<class name="ResPortInfor" table="Res_PortInfor">
<composite-id name="comId" class="ResPortInforId">
<key-property name="nodeId" type="integer">
<column name="NodeID" />
</key-property>
<key-property name="ifName" type="string">
<column name="IfName" />
</key-property>
<key-property name="ifAlias" type="string">
<column name="IfAlias" />
</key-property>
<key-property name="ifDescr" type="string">
<column name="ifDescr" />
</key-property>
<key-property name="ifIndex" type="integer">
<column name="ifIndex" />
</key-property>
<key-property name="ifType" type="integer">
<column name="ifType" />
</key-property>
<key-property name="ifMtu" type="integer">
<column name="ifMtu" />
</key-property>
<key-property name="ifSpeed" type="long">
<column name="ifSpeed" precision="10" scale="0" />
</key-property>
<key-property name="ifAdminStatus" type="integer">
<column name="ifAdminStatus" />
</key-property>
<key-property name="ifOperStatus" type="integer">
<column name="ifOperStatus" />
</key-property>
<key-property name="ifLastChange" type="integer">
<column name="ifLastChange" />
</key-property>
<key-property name="mibmodule" type="string">
<column name="MIBModule" length="100" />
</key-property>
<key-property name="isManaged" type="integer">
<column name="IsManaged" />
</key-property>
<key-property name="typeName" type="string">
<column name="TypeName" length="128" />
</key-property>
<key-property name="ipaddress" type="string">
<column name="IPAddress" length="45" />
</key-property>
<key-property name="netMask" type="string">
<column name="NetMask" length="15" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
public class ResPortInfor implements Serializable {
private static final long serialVersionUID = -5339534595982677885L;
private ResPortInforId comId;
public final ResPortInforId getComId() {
return comId;
}
public void setComId(ResPortInforId comId) {
this.comId = comId;
}
}
如果我不定义复合主键,检索出来的结果是正确的,
如果表中定义复合主键,检索出来的结果是正确的,
就是定义视图中定义复合主键主键有这样的问题。
请高人指点。。。。。