浏览 9101 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-30
最后修改:2009-04-17
选择的是native SQL的方式去执行这个查询。但是问题来了,因为我们公司的框架JSP页面的展现是使用EC控件,而且 封装的方法在这里不能使用原生sql的方式,所有我只能选择建立视图。 建立视图后,使用Eclipse去映射这个视图,我在想,视图没有主键。而且自动生成的配置文件和相关的POJO类 发生了变化: 生成的POJO类有两个,一个跟表名对应的POJO类只有一个属性,就是一个 为 ID 的属性名 , 而且只有这一 个属性。 数据库表名Test ,POJO类Test.java代码如下: public class Test implements java.io.Serializable { private TestId id; public Test() { } public Test(TestId id) { this.id = id; } public TestId getId() { return this.id; } public void setId(TestId id) { this.id = id; } } 还一个pojo类是:TestId.java 这个类却包含了视图的所有字段映射: public class TaizhangTestId implements java.io.Serializable { // Fields private String tname; private String dname; private String dtype; private String plevel; private String xinghao; private String leavefactorysn; private String dfactory; private Date madedate; private Date leavefactorydate; private String remarks; private Long did; private Long pid; }而且这个类重写了 hashcode()方法和equals()方法 配置文件如下: test.hbm.xml只有一个 <hibernate-mapping> <class name="com.mytest.biz.mynext.pojo.Test" table="TEST" > <composite-id name="id" class="com.mytest.biz.mynext.pojo.hbm.TestId"> <key-property name="pname" type="java.lang.String"> <column name="PNAME" length="200" /> </key-property> <key-property name="dname" type="java.lang.String"> <column name="DNAME" length="200" /> </key-property> <key-property name="dtype" type="java.lang.String"> <column name="DTYPE" length="200" /> </key-property> <key-property name="plevel" type="java.lang.String"> <column name="PLEVEL" length="10" /> </key-property> <key-property name="xinghao" type="java.lang.String"> <column name="XINGHAO" length="100" /> </key-property> <key-property name="leavefactorysn" type="java.lang.String"> <column name="LEAVEFACTORYSN" length="100" /> </key-property> <key-property name="dfactory" type="java.lang.String"> <column name="DFACTORY" length="100" /> </key-property> <key-property name="madedate" type="java.util.Date"> <column name="MADEDATE" length="7" /> </key-property> <key-property name="leavefactorydate" type="java.util.Date"> <column name="LEAVEFACTORYDATE" length="7" /> </key-property> <key-property name="remarks" type="java.lang.String"> <column name="REMARKS" length="1024" /> </key-property> <key-property name="did" type="java.lang.Long"> <column name="DID" precision="22" scale="0" /> </key-property> <key-property name="pid" type="java.lang.Long"> <column name="PID" precision="22" scale="0" /> </key-property> </composite-id> </class> </hibernate-mapping> 由于框架的限制,我在JSP页面不能使用<c:out property="pojo属性名"/>的方式去展现结果集。因为你的action 中查询的对象是Test,而你需要的属性名全在TestId中。 没有办法,我只能尝试着去修改配置文件,这个是重点: <hibernate-mapping> <class name="class name="com.mytest.biz.mynext.pojo.TestId" table="TEST"> <id name="did" type="java.lang.Long"> //我把did强行指定为主键,而且把标签<key-property改成<property ,而且去除了 原配置文件<composite-id 指定主键的方式 <column name="did" precision="22" scale="0" /> <generator class="native" /> </id> <property name="pname" type="java.lang.String"> <column name="PNAME" length="200" /> </property> <property name="dname" type="java.lang.String"> <column name="DNAME" length="200" /> </property> <property name="dtype" type="java.lang.String"> <column name="DTYPE" length="200" /> </property> <property name="plevel" type="java.lang.String"> <column name="PLEVEL" length="10" /> </property> <property name="xinghao" type="java.lang.String"> <column name="XINGHAO" length="100" /> </property> <property name="leavefactorysn" type="java.lang.String"> <column name="LEAVEFACTORYSN" length="100" /> </property> <property name="dfactory" type="java.lang.String"> <column name="DFACTORY" length="100" /> </property> <property name="madedate" type="java.util.Date"> <column name="MADEDATE" length="7" /> </property> <property name="leavefactorydate" type="java.util.Date"> <column name="LEAVEFACTORYDATE" length="7" /> </property> <property name="remarks" type="java.lang.String"> <column name="REMARKS" length="1024" /> </property> <property name="pid" type="java.lang.Long"> <column name="PID" precision="22" scale="0" /> </property> </class> </hibernate-mapping> 结果居然成功执行数据库查询,并且我的页面展现问题迎刃而解 happy~~~~~~~~ 很多东西还是需要自己去尝试的,别人的是别人的经验,你只能当做参考,只能当做一种思路,关键还是自己不急不慢,踏踏实实的去做 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-31
这个是跟数据库表设计主外键设置有关系的
|
|
返回顶楼 | |
发表时间:2009-04-17
刚开始接触Hibernian时,觉得不好学,全是xml文件配置,后来看多了,就知道也没有什么了,所以建议大家学习编程语言时,不仅仅看理论,还要多练习和多看看著名的项目
|
|
返回顶楼 | |