您的位置:首页 > 编程语言 > Java开发

ognl.NoConversionPossible

2016-06-13 16:35 429 查看
分别定义了楼层和房间两个类,其中,楼层和房间是双向的一对多关系,两个类的代码如下

package entity;

import java.util.Set;

/**
* 楼层
*
*/
public class Floor {

private String fid;//楼层编号
private String fdesc;//楼层描述

private Set<Room> rooms;//对多方的引用

public Floor()
{

}

public String getFid() {
return fid;
}

public void setFid(String fid) {
this.fid = fid;
}

public String getFdesc() {
return fdesc;
}

public void setFdesc(String fdesc) {
this.fdesc = fdesc;
}

public Set<Room> getRooms() {
return rooms;
}

public void setRooms(Set<Room> rooms) {
this.rooms = rooms;
}

@Override
public String toString() {
return fdesc;
}

}
package entity;

/**
* 房间
* @author user
*
*/
public class Room {

private String rid;//房间编号
private Floor floor;//所在楼层,对一方的引用
private String rdesc;//房间描述

public String getRid() {
return rid;
}
public void setRid(String rid) {
this.rid = rid;
}
public Floor getFloor() {
return floor;
}
public void setFloor(Floor floor) {
this.floor = floor;
}
public String getRdesc() {
return rdesc;
}
public void setRdesc(String rdesc) {
this.rdesc = rdesc;
}
@Override
public String toString() {
return "Room [rdesc=" + rdesc + "]";
}

}
在使用struts2中的iterator遍历集合,列出所有房间列表(包括房间所在楼层)信息时出现了ognl.NoConversionPossible错误,无法查找出房间所在楼层信息,如图



由于是通过房间查找对应的楼层,打开房间类对应的对象关系映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<hibernate-mapping >
<class name="entity.Room" table="room">
<id name="rid" type="string">
<generator class="assigned"></generator>
</id>

<property name="rdesc" type="string"/>

<many-to-one name="floor" class="entity.Floor" column="fid" ></many-to-one>
</class>

</hibernate-mapping>

此处多对一关系中默认使用了懒加载方式,所以在没有明确使用到一方的时候hibernate并不会查找一方的信息,应在<many-to-one>标签中加入lazy="false"属性,表示不使用懒加载方式即可解决问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate java Struts2