`
henry_huangs
  • 浏览: 31767 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate mant-to-one 映射,最简单示例

阅读更多

原文地址,http://blog.csdn.net/love_080808/article/details/3758344

因为我用到了,所以将其整理了一下,以便其他人阅读。

 

1.建立数据库表

create table room (
   id bigint not null  IDENTITY(1,1),
   address varchar(255),
   primary key (id)
)
create table users (
   id bigint not null  IDENTITY(1,1),
   name varchar(255),
   room_id bigint,
   primary key (id)
)
 

 users表示人room表示房间,多个人共有一个房间。

 

2.实体类Users.java

package com.crazyjava.vo;

public class Users implements java.io.Serializable {

	private static final long serialVersionUID = -1481433969291380841L;

	private Long id;
	private String name;
	private Room room;

	public Users() {
	}

	public Users(String name, Room room) {
		this.name = name;
		this.room = room;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Room getRoom() {
		return room;
	}

	public void setRoom(Room room) {
		this.room = room;
	}
}
 

3.实体类Room.java

package com.crazyjava.vo;

public class Room implements java.io.Serializable {
	private static final long serialVersionUID = 6788763073536851614L;
	private Long id;
	private String address;

	public Room() {
	}

	public Room(String address) {
		this.address = address;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getAddress() {
		return this.address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

 

4.映射文件

 

User.hbm.xml

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.crazyjava.vo.Users" table="users" schema="dbo" catalog="bbs">
        <id name="id" type="java.lang.Long">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" />
        </property>
        <many-to-one name="room"
                     column="room_id"
                     class="com.crazyjava.vo.Room"
                     cascade="all"
                     outer-join="true"/>
    </class>
</hibernate-mapping>

 

5.映射文件

Room.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.crazyjava.vo.Room" table="room" schema="dbo" catalog="bbs">
        <id name="id" type="java.lang.Long">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="address" type="java.lang.String">
            <column name="address" />
        </property>
    </class>
</hibernate-mapping>

 

在<many-to-one>中,cascade表示主控方(Users)进行save-update,delete等操作时,被控方(Room)是否也一并进行相关操作。设定为all表示主控方任何操作,被控方也进行操作。

在查询时,设定outer-join为true的情况下,hibernate将使用以下sql

Hibernate:
    select
        user0_.id as id0_1_,
        user0_.name as name0_1_,
        user0_.room_id as room3_0_1_,
        room1_.id as id1_0_,
        room1_.address as address1_0_ 
    from
        user user0_ 
    left outer join
        room room1_ 
            on user0_.room_id=room1_.id 
    where
        user0_.id=?

设为false执行sql

Hibernate: 
    select
        user0_.id as id0_0_,
        user0_.name as name0_0_,
        user0_.room_id as room3_0_0_ 
    from
        user user0_ 
    where
        user0_.id=?

Hibernate: 
    select
        room0_.id as id1_0_,
        room0_.address as address1_0_ 
    from
        room room0_ 
    where
        room0_.id=?

分享到:
评论

相关推荐

    采样质量准则程序.zip_mant91_yearbw7_四种采样样本质量评判准则

    "采样质量准则程序.zip_mant91_yearbw7_四种采样样本质量评判准则"这一压缩包文件提供了关于如何评估采样样本质量的四个关键方法,即距离最大最小、CL2、潜能和JD准则。下面我们将详细探讨这四种评判准则及其应用。 ...

    R0mant1cBe4r.github.io:我的博客

    "R0mant1cBe4r.github.io"这一命名方式暗示了这是一个GitHub Pages站点。GitHub Pages是一项免费的服务,允许用户托管静态网站。通常,个人用户会使用用户名.github.io的形式创建自己的个人主页。在这里,"R0mant1...

    sudo apt-get install ethereum遇到E: Failed to fetch http://ppa.launchpad.net/, Unable to fetch some等

    在Ubuntu上搭建以太坊环境时,每次到sudo apt-get install ethereum这一步都会变得巨卡无比,并且经常遇到这个问题: ... Connection timed out...E: Failed to fetch http://ppa.launchpad.net/ethereum/ethereum/ubuntu

    论文研究 - 快速且可重现的二丁基化衍生化与超高效液相色谱-串联质谱联用同时测定大鼠脑微透析液中的多巴胺,去甲肾上腺素和5-羟色胺

    已经开发了一种快速且可重现的方法,用于同时定量大鼠脑微透析液中的多巴胺(DA),去甲肾上腺素(NE)和5-羟色胺(5-HT)。... 这项研究为将来分析生物流体中的MANTs提供了一种简单而快速的方法。

    mant0071.github.io

    mant0071.github.io

    Python Dili Nedir Ve Örnek Kodlar 什么是Python语言和示例代码.doc

    Bir dilin makine mantığına ne kadar yakın olmasının, makinede ne kadar hızlı çalışabileceğini belirlediği gibi, aynı zamanda insan mantığından ne kadar uzaklaştığını da gö...

    mantarray-frontend-components

    "mantarray-frontend-components"是一个专门用于构建桌面和云环境中的Mantarray应用程序前端界面的组件库。这个组件库基于JavaScript技术,旨在提供一套高效、可重用且易于定制的UI元素,以提升开发者的开发效率和...

    传输设备PON.docx

    - 7353 ISAM FTTB适用的NT板为MANT-A,这类NT板通常针对中小型企业或家庭用户提供更为经济实惠的解决方案。 3. **应用场景**:在网络设备选型阶段,根据具体的应用需求选择合适的NT板,以满足不同的业务需求和性能...

    Tip2.rar_K._km

    标题中的“Tip2.rar_K._km”可能是指一个关于K-均值(K-Means)算法的教程或案例研究,而“Bulna&#305 k Mant&#305 k”在土耳其语中意为“聚类分析”,这与K-均值算法密切相关。描述中的“Bulna&#305 k Mant&#305 k ve...

    testlink&mantis;集成

    TestLink是一款强大的测试管理工具,主要用于测试用例的设计、管理和执行,而Mantis则是一个简单易用的问题追踪系统,用于记录和跟踪软件开发过程中的缺陷。两者的集成使得测试过程中发现的问题可以直接从TestLink...

    manpages-tldr:日常实用的简短实用手册

    手册页日常实用的简短实用手册描述该项目旨在通过日常使用示例制作快速更新,实用且精确的手册页。 这是一个基于类似项目的想法,例如和 ,但是是以实际联机帮助页的格式编写的(主要是使用Pandoc从Markdown转换而来...

    IEEE754 32 bit float 格式与32 bit IBM格式数据详解

    相对地,32位IBM浮点数格式也分为三个部分:符号位(sign)占1位、指数部分(exp)占7位、尾数部分(mant)占24位。其表示的十进制数值的计算公式为: result=(-1)^sign * (mant/(2^24)) * 16^(exp-64) 对于IEEE754...

    GCC编译器内建宏定义

    - **__FLT_MANT_DIG__**、**__FLT_DIG__**、**__FLT_MIN_EXP__** 等宏定义了单精度浮点数的各种特性,包括有效数字位数、最小指数、最大指数等。 - **__DBL_MANT_DIG__**、**__DBL_DIG__**、**__DBL_MIN_EXP__** 等...

    模拟退火算法

    在优化问题中,它能够有效地寻找全局最优解,尤其是对于具有多模态(多个局部最优解)的问题。该算法的基本思想是允许在搜索过程中接受一定概率的较差解决方案,以避免过早陷入局部最优。 在物流领域,模拟退火算法...

    matlab7蚁群算法程序

    - `mant=20`:蚂蚁数量,决定每次迭代中参与搜索的蚂蚁数目。 2. **构建距离矩阵**: - 通过计算城市坐标之间的欧氏距离,得到两两城市间的距离矩阵。 3. **初始化信息素矩阵**: - 初始化为全1矩阵,表示没有...

    tinamedida2:措施中的网站开发存储库

    衡量IT站点措施中的网站开发存储库指示...no arquivo 'keys.js' que não foi colocado no repositório por questões de segurança (se mantém no .gitignore)- Colocar o arquivo 'keys.js' no diretório './b

    简单蚁群算法求解TSP的源程序(原创)_[matlab].doc

    《简单蚁群算法求解TSP的源程序》 蚁群算法是一种受到自然界蚂蚁觅食行为启发的优化算法,由Dorigo M在1991年首次提出。它以其强大的鲁棒性、分布式计算特性以及与其他算法的融合能力而备受关注,尤其在解决组合...

    Stacker:堆栈自动机编译器

    堆垛机 1.0 堆栈使编译器自动化。 先决条件 需要安装以下软件包: # sudo apt-get install g++ 编译 要编译项目,只需导航到 stacker 文件夹并运行 compile.sh: ... se mantém no estado q2 q2 (1, 2, -, q

    蚁群算法 matlab

    1. 初始化:设定参数,如蚁的数量(mant)、循环次数(maxit)、信息素重要度参数(alpha、beta)、遗忘参数(rho)以及单位信息量(Q)。在这个例子中,例如nc表示问题的维度,xx表示试验次数,tao表示信息素的初始...

Global site tag (gtag.js) - Google Analytics