社区
Web 开发
帖子详情
hibernate多表查询,映射关系如何写
游侠KnighT
2009-09-17 03:08:36
假如我想执行这样一条语句:select u.name,r.role from userInfo u, roleInfo r
映射关系要怎样写呢?难道是再在Myeclipse Database Explorer ADD一遍吗?
望高手指点小弟一二!给出例子,不盛感激~
...全文
777
16
打赏
收藏
hibernate多表查询,映射关系如何写
假如我想执行这样一条语句:select u.name,r.role from userInfo u, roleInfo r 映射关系要怎样写呢?难道是再在Myeclipse Database Explorer ADD一遍吗? 望高手指点小弟一二!给出例子,不盛感激~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chen110xi
2010-01-20
打赏
举报
回复
这个.java的文件怎么写呢?
我刚刚接触java,是否可以传个简单的例子呢?
woming66
2009-09-18
打赏
举报
回复
[Quote=引用 11 楼 wanglei74703130 的回复:]
引用 7 楼 woming66 的回复:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="_role" name="com.zzq.oa.model.Role">
<id name="id">
<generator class="native"/>
</id>
<property name="name" length="30" not-null="true" unique="true"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="_user" name="com.zzq.oa.model.User">
<id name="id">
<generator class="native"/>
</id>
<property name="username" length="30" not-null="true" unique="true"/>
<property name="password" length="30" not-null="true"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="usersroles" name="com.zzq.oa.model.UsersRoles">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="role"/>
<many-to-one name="user"/>
</class>
</hibernate-mapping>
我觉得这么写 多增加了一个 hbm.xml 文件 可以写成多对多的关系。
这样 实体类 User 和 role 的映射关系更加明显。
但 我也想请问一下高手,在开发中 哪种方式更好? 希望有详细的理由,谢谢!
[/Quote]
错! 如果直接写多对多关联映射,那么我现在有个需求就是在多对多关联的那张表中加入一个新的属性字段,请问你用hibernate该如何进行映射?
编程序要考虑程序的扩展性和灵活性,因为需求总会变,我们也不知道什么地方在变!我能做的就是让程序不要硬编码,要灵活!
liubey_zff
2009-09-18
打赏
举报
回复
热心的小强确实是热心的高手!学习了。
玉猪
2009-09-18
打赏
举报
回复
[Quote=引用 7 楼 woming66 的回复:]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="_role" name="com.zzq.oa.model.Role">
<id name="id">
<generator class="native"/>
</id>
<property name="name" length="30" not-null="true" unique="true"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="_user" name="com.zzq.oa.model.User">
<id name="id">
<generator class="native"/>
</id>
<property name="username" length="30" not-null="true" unique="true"/>
<property name="password" length="30" not-null="true"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="usersroles" name="com.zzq.oa.model.UsersRoles">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="role"/>
<many-to-one name="user"/>
</class>
</hibernate-mapping>
[/Quote]
我觉得这么写 多增加了一个 hbm.xml 文件 可以写成多对多的关系。
这样 实体类 User 和 role 的映射关系更加明显。
但 我也想请问一下高手,在开发中 哪种方式更好? 希望有详细的理由,谢谢!
游侠KnighT
2009-09-18
打赏
举报
回复
学习了
yuyejiewu
2009-09-17
打赏
举报
回复
[Quote=引用 6 楼 ydsxi1314 的回复:]
在同一个hbm.xml不可能写多个表吗?
[/Quote]
不可以的
xiaowei3856
2009-09-17
打赏
举报
回复
学习
游侠KnighT
2009-09-17
打赏
举报
回复
啊,意思说就得写三个hbm.xml文件,三个表还要生成三个bean(set()、get()方法)了是不?
woming66
2009-09-17
打赏
举报
回复
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="_role" name="com.zzq.oa.model.Role">
<id name="id">
<generator class="native"/>
</id>
<property name="name" length="30" not-null="true" unique="true"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="_user" name="com.zzq.oa.model.User">
<id name="id">
<generator class="native"/>
</id>
<property name="username" length="30" not-null="true" unique="true"/>
<property name="password" length="30" not-null="true"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="usersroles" name="com.zzq.oa.model.UsersRoles">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="role"/>
<many-to-one name="user"/>
</class>
</hibernate-mapping>
给你自己看吧 这是我一个项目的例子
游侠KnighT
2009-09-17
打赏
举报
回复
在同一个hbm.xml不可能写多个表吗?
z_j188
2009-09-17
打赏
举报
回复
[Quote=引用 4 楼 ydsxi1314 的回复:]
我要再加一个表,需要再添加一个hbm.xml等文件吗?
[/Quote]
要的
游侠KnighT
2009-09-17
打赏
举报
回复
我要再加一个表,需要再添加一个hbm.xml等文件吗?
woming66
2009-09-17
打赏
举报
回复
<composite-id name="id" class="user.UserinfoId">
<key-property name="id" type="java.lang.String">
<column name="ID" length="32" />
</key-property>
<key-property name="pwd" type="java.lang.String">
<column name="PWD" length="20" />
</key-property>
<key-property name="name" type="java.lang.String">
<column name="NAME" />
</key-property>
<key-property name="onLine" type="java.lang.String">
<column name="ON_LINE" length="10" />
</key-property>
<key-property name="purview" type="java.lang.String">
<column name="PURVIEW" length="10" />
</key-property>
<key-property name="islock" type="java.lang.String">
<column name="ISLOCK" length="10" />
</key-property>
</composite-id>
大哥 你的USERINFO没设主键,晕死! 初学者最好不要用反向工程 要自己写映射文件
游侠KnighT
2009-09-17
打赏
举报
回复
嗯,关系我是想问一下这个映射关系如何写
下面是一个没有主键的表的映射关系,我要再加一上一个表呢?如何加呢?
<hibernate-mapping>
<class name="user.Userinfo" table="USERINFO" schema="`FILE`">
<composite-id name="id" class="user.UserinfoId">
<key-property name="id" type="java.lang.String">
<column name="ID" length="32" />
</key-property>
<key-property name="pwd" type="java.lang.String">
<column name="PWD" length="20" />
</key-property>
<key-property name="name" type="java.lang.String">
<column name="NAME" />
</key-property>
<key-property name="onLine" type="java.lang.String">
<column name="ON_LINE" length="10" />
</key-property>
<key-property name="purview" type="java.lang.String">
<column name="PURVIEW" length="10" />
</key-property>
<key-property name="islock" type="java.lang.String">
<column name="ISLOCK" length="10" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
woming66
2009-09-17
打赏
举报
回复
select u.name,r.role from userInfo u, roleInfo r
userInfo 和 roleInfo 是多对多关系
一般都把多对多拆分成两个多对一
通过表连接来实现
如select u.userName, r.roleName from UserRole ur join ur.user u join ur.role r;
hibernate
4.3.10.Final
Hibernate
是一个开放源代码的对象
关系
映射
框架,它对JDBC进行了轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。
ibatis的jar包
当
hibernate
不再犀利的时候,拿起ibatis的大刀
全面掌握
Hibernate
框架技术
包含
Hibernate
相关技术:
Hibernate
简介、Session API、对象的状态
查询
操作(主键
查询
、HQL
查询
、Criteria
查询
、SQL
查询
、命名
查询
、doWork) 关联
关系
:多对一、一对多、多对多、一对一 组件
映射
、继承
映射
、缓存...
Hibernate
多
表
关联
查询
记录
映射
通常情况下,单
表
的
查询
比较简单,在
hibernate
中可以将
查询
记录直接
映射
到具体的实体类,因为通常会通过JPA注解将数据
表
和实体类建立
映射
关系
,在
查询
数据,保存数据时,可以直接操作java实体类,但是涉及到多
表
查询
...
hibernate
多
表
查询
查询
结果
映射
到自定义类中
在
hibernate
开发中,经常会遇到多
表
查询
,那么当
查询
出来得这个集合不与我们得任何一个类有
关系
,我们如何获取呢? 假设有两个bean,一个叫User,另一个叫Order User 字段:userId,userName,telephone,address ...
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章