Hibernate中引用View的解决方案_来自一网友

Hibernate 优化技术之调用视图(View)和存储过程(Procedure) 关于hibernate优化之使用视图和存储过程 阅读详情
 

一、思路
问题:
以往用Hibernate处理View时发生的困难主要集中在这两方面:
View是没有主键
由于View是由select语句生成,所以不存在任何主键。也就无法对其映射。
Hibernate必须对要操作的表进行po封装
Hibernate要求对数据库的操作都是通过pojo映射来实现的。也就是说无法对某个View直接读取而不对其进行映射。

如果强制用hibernate反转,会将所有的字段变成一个复合主键,关键是根本查不出数据来!
解决:
要解决以上问题,我采取一下方案:
在建立View的时候生成类似主键的字段,通过其他手段建立类似主键的字段。 并不需要另外建立这个主键!!!

在用Hibernate反转后,将复合主键po文件中构建器及geter/seter拷贝至主po文件中。同时修改相应的hbm.xml文件,手动随便把任一字段改为主键即可。 
二、实现
建立视图

代码
  1. create or replace view v_user_perm   
  2. (id, userid, moduleid)                              其实id并不需要!
  3. as   
  4. select rownum,a.id,c.id   
  5. from sysuser a,user_perm b,module c   
  6. where a.id=b.userid    
  7. and b.moduleid=c.id  

这个视图是从两个表中分别取出id。
建立hbm.xml :

代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">  
  3. <hibernate-mapping>  
  4. <class name="com.fulong.journal.cad.po.perm.VUserPerm" table="V_USER_PERM" schema="JCAD">  
  5. <id name="id" column="ID" type="long">        <column name="JHDM" length="14" />
        <generator class="assigned" />
  6. </id>  
  7. 随便挑以下一个属性作主键即可  
  8. <id name="userid" column="USERID" type="string" length="32" not-null="true">
  9.           <generator class="assigned" />
  10. </id>  
  11. <property name="moduleid" column="MODULEID" type="string" length="32" not-null="true"/>  
  12. </class>  
  13. </hibernate-mapping>  

 注意:
view一般用在小涉及到多个表的组合查询时用到
ESP32编译卡在‘Cannot establish a connection to the component registry’?别急着重装,先试试这两个国内镜像配置 本文详细解析了ESP32编译过程中常见的‘Cannot establish a connection to the component registry’报错问题,并提供了国内镜像源的配置方案。通过对比Gitee、清华大学、阿里云和中科大等镜像源的性能,帮助开发者快速解决网络连接问题,提升编译效率。文章还包含手把手的配置教程和进阶技巧,适用于ESP-IDF开发环境的优化。 阅读详情

相关推荐

Unity调用手机摄像头避坑指南:从权限检测到自动对焦问题解决

本文深入解析了Unity移动端集成手机摄像头时遇到的权限、对焦与性能等核心难题。针对权限管理,提供了健壮的原生接口调用方案;针对自动对焦模糊问题,详细对比了原生插件与第三方插件两种解决路径;并分享了分辨率选择、数据处理及功耗控制等关键性能优化技巧,帮助开发者构建稳定高效的摄像头功能。

weixin_29007243的博客 471

hibernate 视图无主键,联合主键的使用

hibernate 视图无主键,联合主键的使用 使用hibernate时,视图无主键的时候会报异常,随意使用一个字段作为主键,在查询操作时,如果该字段不是unique的,则会出现数据不准确的问题,这个时候可以考虑使用联合主键 创建一个包含联合主键的类,并在类上注释@Embeddable /** * user_role视图的联合主键 */ @Embeddable @Setter @Getter public class UserRoleCompositeId implements Serializable

kaili_0230的博客 601

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 313

HIBERNATE VIEW MAPPING

  因为今天有个报表需要做.比较复杂.用以前的办法就是查两次,然后根本两次的结果进来组合.这种办法的效果不高.而且很难维护.  在上峰指点下,决定用VIEW先查出数据.再通过一个REPORTBEAN进行映射.可是用JPA还没有用过VIEW MAPPING.感觉应该不容易.于是上HIBERNATE官网上看一些资料.觉得可行.再查了一下JPAPI,也有相关记录.action.  view ->

[roccat-Java专栏] 1233

Juniper SRX PPPoE配置

set interfaces pp0 unit 1 ppp-options chap default-chap-secret 拨号用户名密码。set interfaces pp0 unit 0 ppp-options chap default-chap-secret 拨号密码。set interfaces pp0 unit 0 ppp-options chap local-name 拨号用户名。6号口接运营商进行拨号。

Jian Sun_的博客 750

【Unity小游戏】整整一个周末写一款《皇室战争 玩法》 的 即时战斗类 游戏Demo。两万多字游戏制作过程+解析

Unity游戏制作,本篇文章介绍了复刻皇室战争玩法的一个自制小游戏,共有该游戏的两万字教程加制作过程,欢迎品尝! 世界上没有绝对的公平,如果我们起点就比别人第一步,那就更需要比别人努力了。

努力前行,总会成为自己心中的那道光 12万+

Hibernate映射视图View

create or replace view v_memo as select rownum as sadid,m.sadprf as sadprf,m.sadfrm as sadfrm,m.sadadm as sadadm,m.sadagt as sadagt,m.sadsty as sadsty,m.sadbde as sadbde,m.sadmch as sadmch,m.sadcur ...

想成为工程师的码农 368

GaussDB本地安装手册(主备模式)

如果实例状态是Normal,则安装成功。三节点集中式配置文件。

Sebastien23的博客 2633

hibernate 查询view值覆盖,生成重复数据

问题背景: 两个表A,B,B是detail表,A一对多B,使用A的id关联,为了方便查询detail数据。 正常情况:多条A数据相同但不同B数据不同。 异常情况:多条数据,A数据相同,B数据也相同。 问题分析: <id>设置成了不唯一字段,而Hibernate认为它是唯一的,导致了查询出的两条数据有相同的B字段的值时,Hibernate直接复用了第一条查出的数据,因为它认为第...

王仁一的博客 430

用 SemanticObject 把字段变成可点击链接:Fiori Elements Navigation Using a Link 的工程化实践

SAP Fiori elements 通过 Common.SemanticObject 注解可将字段转为可点击链接,实现应用间跳转。当源字段名与目标属性名不一致时,需使用 Common.SemanticObjectMapping 进行映射。该功能依赖 Fiori Launchpad 的目标映射配置,确保正确解析 semantic object + action 并传递参数。常见误区包括未配置目标映射或字段映射错误,需逐一检查语义标注、intent 解析和参数传递链路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 583

Hibernate中引用View的解决方案_来自一网友,在此表示谢谢

一、思路 问题: 以往用Hibernate处理View时发生的困难主要集中在这两方面: View是没有主键 由于View是由select语句生成,所以不存在任何主键。也就无法对其映射。 Hibernate必须对要操作的表进行po封装 Hibernate要求对数据库的操作都是通过pojo映射来实现的。也就是说无法对某个View直接读取而不对其进行映射。 解决: 要解决以上问题,我采取一下方案: 在建

黄瓜和土豆的专栏 2325

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

hibernate mysql8配置_Hibernate + proxool 初级配置(Hibernate3+MySql 8小时)

网上找了一些关于解决 Hibernate3 + MySql 8小时的问题,好多网友都建议用 proxool也查找了一些相关的文章,需要做些准备,首先下载proxool,下载地址 : 点我下载(也可以从我提供的附件里下载)然后将 lib文件夹下的两个 .jar文件 拷贝到 项目的 lib文件夹中。现将我自己配置的代码粘到这里,以备众不时之需。好,现在在src目录下,也就是与hibernate.cfg...

weixin_39593247的博客 335

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hibernate4 buildSessionFactory与 ServiceRegistry

在用Hibernate4时会发现:     [java] view plaincopy   SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();     buildSessionFactory()废弃,相信很多人...

coffeehot的专栏 453

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Hibernate常见映射关系总结

ORM,全称是(Object Relational Mapping),即对象关系映射。说白了就是对象之间的关系的映射。         Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),它们各自的作用如下。         映射类(*.java):类中属性会被

BENBENMENGMENG123的专栏 641

Hibernate4中buildSessionFactory方法废弃解决

在用Hibernate4时会发现: [java] view plaincopy "font-size:18px;">SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();   buildSessionFact

LzwGlory的专栏 2765

Spring好处————网友总结

1.其实用spring最好的地方就是实现代码的复用。首先spring的设计原则是非侵入性的,就是实际业务逻辑代码中感觉不到spring框架的存在,spring只是在其中起到一个实例产生的作用,然后把实例分配给需要的对象。这种设计的好事就是可以随时随地的把某个业务逻辑很轻松的从整个系统中抽离出来再在无任何修改的情况下用到其他系统中去。然后就是切面的编程,这种设计是灵活的操作织入,例如你的某个业务逻辑是执行存款,存款这个业务之前之后都应该有某些附加操作,例如用户登录,检查余额,记录存款日志信息,但是这些不能够放

Kevin's blog 940

Hibernate4中buildSessionFactory方法废弃问题。

在用Hibernate4时会发现: SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); buildSessionFactory()废弃,相信很多人会觉得为什么废弃这方法,查了网上的资料,综合如下: Hi...

iaiti的专栏 2万+

JSF+MYFACES+HIBERNATE+SPRING+ACEGI+A4J

没事找事干     近日,用了三个月的时候,结合三种开源框架,发现三者之间存在结合后的bug,有时候,会导致项目的无法起动,种种原因令你无从下手.现结合配置成功.  jsf+hibernate+spring是参照jw-0719-jsf而做的,并加入了acegi.做权限管理,在这里先感谢lingoosoft提供技术支持.由于现在没有服务器提供上传,所以无法上传.....如那位网友提供空间,请

yamiqi的专栏 1661

Hibernate - 分页引发的问题

前几天查看后台的日志时,发现常出现Hibernate的警告信息:WARN (org.hibernate.hql.ast.QueryTranslatorImpl:328) - firstResult/maxResults specified with collection fetch; applying in memory!在中文Google上搜了搜,没有找到什么有用的信息,之后在英文的Go...

weixin_34122604的博客 173

Hibernate映射不规则查询结果

今天看到网友 pistol, 发贴[url=http://www.iteye.com/topic/247943] hibernate的sqlQuery有没有setResultTransformer这个方法[/url], 大致是问如何为特殊返回结果的 Query 映射持久类。 由于hibernate3.2之前没有 setResultTransformer 这个方法。推荐你一个简单的办法。 ...

Raymond的Java世界 186

hibernate tools插件安装.

一: 安装hibernate tools 插件 通过在网上浏览查阅,总结并生成实体,最后整理出相信文档,希望能帮助更多的人. 其次,感谢部分网友提供详细资料.   下载: Hibernate tools :      1.      进入jboss主页: http://www.jboss.org/tools/download, 点击download,选择需要下载的jb

奋斗的小鸟专栏 1217

java hql 查询所有内容_Hibernate中使用HQLQuery查询全部数据和部分数据的方法实例...

对于我们学习的hql,我大概理解为就是一种查询的语言,它没有增加、删除、修改的作用,而对我们用来查询的操作,感觉用起来就是很简便,代码很少,很好理解一些。下面是查询操作的简单实例package com.lc.view;import java.util.iterator;import java.util.list;import org.hibernate.session;import org.hib...

weixin_35020039的博客 298

【实体 报错 】No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer a...

1 HTTP Status 500 - Could not write content: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid...

weixin_33971130的博客 637
上一篇: java.text.DecimalFormat()格式化输出数字
下一篇: ORACLE 自增序列SEQUENCE
memory_xj
博客等级 码龄24年 44粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值