ognl.NoConversionPossible
2016-06-13 16:35
429 查看
分别定义了楼层和房间两个类,其中,楼层和房间是双向的一对多关系,两个类的代码如下
由于是通过房间查找对应的楼层,打开房间类对应的对象关系映射文件
<?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"属性,表示不使用懒加载方式即可解决问题
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"属性,表示不使用懒加载方式即可解决问题
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树