因为一个报表需要的统计需要连接3张表,而且sql语句比较复杂,并且三张表都是百万数量级的数据。所有开始我
选择的是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~~~~~~~~
很多东西还是需要自己去尝试的,别人的是别人的经验,你只能当做参考,只能当做一种思路,关键还是自己不急不慢,踏踏实实的去做
分享到:
相关推荐
"自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...
本篇文档主要讨论了如何在Hibernate中使用映射视图来处理这种情况,特别是在面对无法直接使用原生SQL(native SQL)的情况下。 Hibernate是一个强大的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转化为...
Hibernate的视图功能 网上找的 , 自己实验过,能用
开发者可以通过这个视图连接到各种数据库,查看、创建、修改表等,同时,它也是生成Hibernate映射文件的关键工具。 3. **生成Hibernate映射文件的步骤**: - 首先,需要在MyEclipse中创建一个新的Web项目,例如`...
**标题解析:**“hibernate映射心得 原创” 这个标题表明了本文将主要探讨作者在使用Hibernate框架进行对象关系映射(ORM)时的个人理解和经验。Hibernate是一个流行的Java ORM框架,它允许开发者用面向对象的方式...
在IT行业中,开发Java应用程序时,常常需要使用到ORM(对象关系映射)框架,比如Hibernate,它能够帮助我们把数据库中的数据与Java对象进行映射,从而简化数据操作。而MyEclipse作为一款强大的Java集成开发环境,...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句。映射文件是Hibernate中的关键元素,它定义了Java实体类与数据库表之间的...
### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...
build.xml 手写自动生成Hibernate映射文件和配置文件源代码
Hibernate 注解映射 Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,...
在Hibernate中,我们可以利用Hibernate的映射机制来处理视图,将其作为实体进行操作。 **视图的作用** 1. **数据安全**:视图可以限制用户对原始表的访问权限,只允许他们看到和修改特定的数据集。 2. **数据聚合**...
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
在使用Hibernate框架进行对象关系映射(ORM)时,MyEclipse提供了自动生成映射文件和实体类的功能,极大地简化了数据库与Java类之间的绑定工作。以下是详细步骤和相关知识点: 1. **DB Browser视图**:在MyEclipse...
### MyEclipse自动生成Hibernate映射文件 #### 一、概述 在开发基于Java的Web应用时,ORM(对象关系映射)框架如Hibernate能够极大地提高数据持久化的效率及便捷性。MyEclipse是一款功能强大的集成开发环境,支持...
在Java开发领域,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作。本文将深入探讨如何利用Hibernate的映射文件来生成数据库,以此提高开发效率并减少手动创建...
hibernate 映射关系 小结
近期整理的hibernate映射的一点总结,希望可以帮到一些人
注:为节省空间,程序中需要的jar包,均在HibernateManytoManyMapCascadingSave.zip\HibernateManytoManyMapCascadingSave\lib\ <br>Hibernate 多对多实体映射实例 <br>学习Hibernate 实体映射的映射的好帮手...
标题中的“Spring+Hibernate 自动映射”是指在Java Web开发中,利用Spring框架与Hibernate ORM工具进行数据层的整合,实现对象关系映射(ORM)的自动化处理。这一技术结合了Spring的强大依赖注入(DI)和事务管理...