部门和员工属于一对多的关系

员工的账户属于一对一关系

账户和权限属于多对多关系

department.hbm.xml

 1 <hibernate-mapping>
2 <class name="com.demo.first.domain.Department" table="department">
3 <id name="did" column="did">
4 <generator class="native"/>
5 </id>
6 <property name="name" column="name"/>
7 <property name="description" column="description"/>
8 <set name="employeeSet" inverse="true" cascade="save-update">
9 <!-- 外键的名称(字段名):也就是说如果是一对多的关系,那么会在多的一方生成的外键名称是 column 中的值,
10 这个值是可以改变的,建议和对应的名称一致 -->
11 <key column="wj_id"></key>
12 <one-to-many class="com.demo.first.domain.Employee"/>
13 </set>
14 </class>
15 </hibernate-mapping>

employee.hbm.xml

 1 <hibernate-mapping>
2 <class name="com.demo.first.domain.Employee" table="employee">
3 <id name="eid" column="eid">
4 <generator class="foreign"><!-- 直接将主键和外键进行关联,主键同时作为外键使用,在 hibernate 中 one-to-one 没办法在代码中体现出新字段名,可以使用many-to-one来生成一个字段,也可以使用此方法来生成外键 -->
5 <param name="property">userAccount</param>
6 </generator>
7 </id>
8 <property name="name" column="name" length="20"/>
9 <property name="gender" column="gender"/>
10 <property name="birthday" column="birthday"/>
11 <property name="description" column="description"/>
12 <one-to-one name="userAccount" class="com.demo.first.domain.UserAccount" constrained="true" cascade="save-update"/>
13 <!-- 和 department 中配置 column 的名称是一样的,需要对应 -->
14 <many-to-one name="department" class="com.demo.first.domain.Department" column="wj_id"/>
15 </class>
16 </hibernate-mapping>

privilege.hbm.xml

 1 <hibernate-mapping>
2 <class name="com.demo.first.domain.Privilege" table="privilege">
3 <id name="pid" column="pid">
4 <generator class="native"/>
5 </id>
6 <property name="action"/>
7 <set name="userAccountSet" table="userAccount_privilege">
8 <!-- 和一对多一样的操作,column 是在生成的字段名(外键),是可以改变的,多对多的关系中,会生成一个中间表,那么在
9 column 中配置的参数就是生成的中间表中的字段名,另外一方配置的字段名需相同-->
10 <key column="wj_pid"></key>
11 <many-to-many class="com.demo.first.domain.UserAccount" column="ua_wj_id"/>
12 </set>
13 </class>
14 </hibernate-mapping>

useraccount.hbm.xml

 1 <hibernate-mapping>
2 <class name="com.demo.first.domain.UserAccount" table="userAccount">
3 <id name="uaid" column="uaid">
4 <generator class="native"/>
5 </id>
6 <property name="loginName" column="loginName"/>
7 <property name="password" column="password"/>
8 <one-to-one name="employee" class="com.demo.first.domain.Employee"/>
9 <set name="privilegeSet" table="userAccount_privilege">
10 <!-- 对应于另一方的参数配置,column 的参数值和另一方相同,也就是生成的中间表的字段名相同 -->
11 <key column="ua_wj_id"></key>
12 <many-to-many column="wj_pid" class="com.demo.first.domain.Privilege"/>
13 </set>
14 </class>
15 </hibernate-mapping>

另附上可以打开 hibernate debug 模式(可以查看所有的操作,包括自动建表语句等等):

需要的 jar 包等:

hibernate文件下载:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.4.2.Final/hibernate-release-5.4.2.Final.zip/download

在 hibernate-release-5.4.2.Final\project\etc 中找到 log4j.properties 这个文件,直接放到 src 的根目录下,即可:

重点就是上面的那个语句,去掉注释(默认是打开的,没有注释)重启即可,

2019-04-25

hibernate中关系映射的配置问题的更多相关文章

  1. hibernate(3) —— 关系映射

    hibernate中关系映射指的是实体类与实体类间的关系.和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系. 一:一对一映射 两个对象之间是一对一的关系,如人和身份证之间是 ...

  2. Hibernate中的映射关系(一对多)

    在数据库中表和表之间的关系有几种,(一对一,一对多,多对多)一对一关系:可以选择任意一方插入外键(one-to-one:one-to-one<--->many-to-one[unique= ...

  3. Hibernate注解关系映射

    Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid)   1)一对一外键关联映射(单向) @O ...

  4. hibernate中一对一映射

    一.hibernate中一对一映射有两种 1 主键方式,一张表的主键是通过另一张表的主键生成的 2 外键方式,一张表添加外键引用另一张表的主键,并添加唯一unique约束 二.下面进行简单例子,用户和 ...

  5. hibernate中的映射

    hibernate中的映射是指Java类和数据库表中的属性来进行关联,然后通过类来操作数据库中,这就是简单的映射.

  6. 详谈Hibernate框架关系映射!

    接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象, ...

  7. hibernate 实体关系映射笔记

    @经常使用属性说明:     @Entity:实体类     @Table:指定相应数据表     @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态     @Col ...

  8. hibernate对象关系映射( 一对一,一对多,多对一,多对多的单向,双向映射 ——)

    对象之间的关系: 关系映射之间的关系只的是对象之间的关系,并不指数据库表的关系(外键关系)这儿解决的问题是当对象之间的关系之一时,数据库表该如何映射,编程上如何对待. 一对一(主键关联,和单向的外键关 ...

  9. Hibernate 对象关系映射文件

    简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...

随机推荐

  1. [Golang]-8 工作池、速率限制、原子计数器、互斥锁

    目录 工作池 速率限制 原子计数器 互斥锁 工作池 在这个例子中,我们将看到如何使用 Go 协程和通道实现一个工作池 . func worker(id int, jobs <-chan int, ...

  2. Docker应用场景和局限性

    Docker有哪些好的特性?作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势.首先, Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多.其次, Docke ...

  3. kubernetes实战-交付dubbo服务到k8s集群(五)交付dubbo-monitor监控服务到k8s

    首先下载 dubbo-monitor源码包7-200 dubbo-monitor是监控zookeeper状态的一个服务,另外还有dubbo-admin,效果一样,感兴趣的可以自己研究一下. # cd ...

  4. kubernetes进阶(三)服务发现-coredns

    服务发现,说白了就是服务(应用)之间相互定位的过程. 服务发现需要解决的问题: 1.服务动态性强--容器在k8s中ip变化或迁移 2.更新发布频繁--版本迭代快 3.支持自动伸缩--大促或流量高峰 我 ...

  5. 2.hello rabbitmq

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-07-22 22:49:50 星期一 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  6. codeforces 1030D Vasya and Triangle【思维+gcd】

    题目:戳这里 题意:选出三个点构成三角形,要求面积为n*m/k. 解题思路:因为三个点的坐标都是正整数,根据三角形面积公式(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2=n* ...

  7. codeforce 3C

    B. Lorry time limit per test 2 seconds memory limit per test 64 megabytes input standard input outpu ...

  8. OpenCV & Web Assembly & Web Worker

    OpenCV & Web Assembly & Web Worker opencv-in-the-web https://aralroca.com/blog/opencv-in-the ...

  9. 微信小程序 API

    微信小程序 API https://developers.weixin.qq.com/miniprogram/dev/component/cover-view.html demo https://de ...

  10. Nestjs mongodb

    nestjs 文档 mongoose 文档 使用"@meanie/mongoose-to-json"转换查询后返回的json数据 将"_id"转为"i ...