用过hibernate的人都知道,有时我们要用数据库的视图。但关键是视图没有主键,这个用Myeclipse自动生成的POJO类就有两个。一个类名.java,一个是类名Id.java,而映射文件只有一个。这样你不能直接用Hibernate的“from类名”,只有用“select 类名.id. 属性名from类名”,因为只要视图中有一个字段有一个为NULL,你查出来的数据就会为NULL.而用后者这样查出来的对象是一个Object对象。Object对象不好拆分。不能直接用“类名.属性名”。其实我们可以强制修改 类名.hgc.xml .
例如:
我们有这样一个视图
public class AllTablePb implements Serializable {
// Fields
private AllTablePbId id;
// Property accessors
public AllTablePbId getId() {
return this.id;
}
public void setId(AllTablePbId id) {
this.id = id;
}
}
public class AllTablePbId implements java.io.Serializable {
// Fields
private String owner;
private String tableName;
private String columnName;
private String dataType;
private String pbcCnam;
private String pbcCmnt;
// Property accessors
public String getOwner() {
return this.owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getTableName() {
return this.tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getColumnName() {
return this.columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getDataType() {
return this.dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getPbcCnam() {
return this.pbcCnam;
}
public void setPbcCnam(String pbcCnam) {
this.pbcCnam = pbcCnam;
}
public String getPbcCmnt() {
return this.pbcCmnt;
}
public void setPbcCmnt(String pbcCmnt) {
this.pbcCmnt = pbcCmnt;
}
}
配置文件:
<hibernate-mapping>
<class name="com.hhkj.workflow.bean.AllTablePb" table="V_ALLTAB_PB" schema="CANP">
<composite-id name="id" class="com.hhkj.workflow.bean.AllTablePbId">
<key-property name="owner" type="string">
<column name="OWNER" length="30" />
</key-property>
<key-property name="tableName" type="string">
<column name="TABLE_NAME" length="30" />
</key-property>
<key-property name="columnName" type="string">
<column name="COLUMN_NAME" length="30" />
</key-property>
<key-property name="dataType" type="string">
<column name="DATA_TYPE" length="106" />
</key-property>
<key-property name="pbcCnam" type="string">
<column name="PBC_CNAM" length="30" />
</key-property>
<key-property name="pbcCmnt" type="string">
<column name="PBC_CMNT" length="254" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
而如何把联合主键转换为普通的主键呢。那我就就把AllTablePb删除。把AllTablePbId改为AllTablePb。
配置文件改为:
<hibernate-mapping>
<class name="com.hhkj.workflow.bean.AllTablePb" table="V_ALLTAB_PB" schema="CANP">
<id name="owner" type="string">
<column name="OWNER" length="30" />
</id>
<property name="tableName" type="string">
<column name="TABLE_NAME" length="30" />
</property>
<property name="columnName" type="string">
<column name="COLUMN_NAME" length="30" />
</property>
<property name="dataType" type="string">
<column name="DATA_TYPE" length="106" />
</property>
<property name="pbcCnam" type="string">
<column name="PBC_CNAM" length="30" />
</property>
<property name="pbcCmnt" type="string">
<column name="PBC_CMNT" length="254" />
</property>
</class>
</hibernate-mapping>
对于配置文件的新主键是任意的。
分享到:
相关推荐
总之,Hibernate视图提供了对数据库视图的封装,使得我们可以像操作普通实体一样处理视图数据。虽然视图通常用于只读操作,但结合Hibernate的映射机制,我们可以方便地在Java应用程序中使用视图,提高代码的可维护性...
本篇文档主要讨论了如何在Hibernate中使用映射视图来处理这种情况,特别是在面对无法直接使用原生SQL(native SQL)的情况下。 Hibernate是一个强大的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转化为...
【标题】"Hibernate做的留言板" 是一个基于Java的Web应用程序,使用了流行的持久化框架Hibernate来处理数据库交互。这个项目提供了完整的源代码,方便开发者直接在Eclipse集成开发环境中运行和学习。它不仅是一个...
在本项目中,"用Struts2加Hibernate对学员信息进行增删改查操作",主要涉及了以下几个核心知识点: 1. **Struts2框架**:Struts2是一个MVC(Model-View-Controller)架构的Java框架,它提供了处理HTTP请求和响应的...
Struts和Hibernate是Java Web开发中的两个重要框架,它们在构建...通过研究这个项目,开发者不仅可以学习到如何整合Struts和Hibernate,还能了解到如何在MyEclipse环境中进行开发,这对提升Java Web开发技能大有裨益。
在这个案例中,我们使用了Java服务器页面(JSP)作为视图层,Hibernate作为持久层框架来处理数据库操作,实现了留言板的功能。下面我们将深入探讨这两个技术及其在留言板应用中的具体应用。 **1. JSP(Java Server ...
而Hibernate则是一个对象关系映射(ORM)框架,它简化了数据库操作,允许开发者通过Java对象来操作数据库,减少了对SQL的直接使用。 标题中的"spring+hibernate"表明这是一个将两者结合使用的项目。Spring和...
Spring MVC 负责处理HTTP请求并将其路由到相应的控制器,Spring 提供了依赖注入(DI)和面向切面编程(AOP),简化了代码管理与模块化,而Hibernate则是持久层框架,负责数据库操作,提供了对象关系映射(ORM)功能...
Spring MVC 用于构建应用程序的前端控制器,提供模型-视图-控制器(MVC)架构,而 Hibernate 是一个强大的对象关系映射(ORM)框架,负责数据库操作。整合这两个框架可以让我们在处理业务逻辑时更加高效和灵活。 ...
本案例主要关注的是如何将Hibernate ORM(对象关系映射)框架与Struts2 MVC(模型-视图-控制器)框架整合,同时探讨MVC分层架构在实际应用中的运用。以下是对这些知识点的详细说明: **1. Hibernate ORM框架** ...
这些库文件包含了运行一个基于Struts 2和Hibernate的Web应用所需的所有核心组件,例如Struts 2的动作调度、视图渲染、拦截器实现,以及Hibernate的对象持久化、查询工具等。在导入项目时,只需将这些jar包添加到项目...
SpringMVC、Hibernate和Spring是Java开发中三大核心框架,它们各自负责应用程序的不同层面:SpringMVC用于处理HTTP请求和响应,Hibernate则是持久层框架,负责数据库操作,而Spring作为全能容器,提供依赖注入和面向...
Hibernate 是一个对象关系映射(ORM)框架,它将数据库操作转化为对Java对象的操作,消除了低级JDBC代码,提高了开发效率。通过Hibernate,开发者可以使用Java对象直接操作数据库,而无需关心SQL语句的编写。 在...
在IT行业中,Spring框架是Java领域最广泛应用的轻量级框架之一,而Spring MVC是它的一个模块,专门用于处理Web应用程序的模型-视图-控制器(MVC)架构。Spring 5.x带来了许多性能改进和新特性,如Reactor支持以实现...
**JSF与Hibernate整合** 的目的是将JSF的UI处理能力与Hibernate的数据访问能力结合起来,创建出既具有良好用户体验又能够高效处理数据的Web应用。在本项目中,“JSF与Hibernate整合的登陆”可能涉及到以下关键知识点...
开发者只需要定义实体类(Entity),并用注解来描述其与数据库表的关系,Hibernate会自动处理数据的存取。 在使用JSF和Hibernate完成对表的CRUD操作时,通常分为以下步骤: 1. **创建JavaBean**:JavaBean是符合...
SpringMVC和Hibernate是Java开发中非常流行的两个框架,它们分别负责Web应用的模型-视图-控制器(MVC)架构和对象关系映射(ORM)。这个“springMVC+hibernate搭建的一个demo”旨在为初学者提供一个快速入门的实例,...
Java的JDBC接口与Hibernate结合,实现了对数据库的高效访问;同时,Java的异常处理机制、多线程等特性也提升了系统稳定性和并发处理能力。 4. **J2EE(Java 2 Platform, Enterprise Edition)**:这是一个企业级的...
3. **模型-视图-控制器**:模型处理业务逻辑,视图负责展示数据,控制器协调模型和视图的交互。 4. **拦截器**:允许自定义拦截器,实现预处理和后处理功能,如权限验证、日志记录等。 5. **视图解析器**:自动根据...
Spring MVC 和 Hibernate 是两个在Java Web开发中广泛使用的框架,它们分别处理模型-视图-控制器(MVC)架构中的不同部分以及数据持久化。Spring MVC 提供了强大的请求处理和视图管理功能,而 Hibernate 则是 ORM...