4、Hibernate 实体关系映射(二、单边多对一关系 注解、xml两种方式)

原创 2014年08月25日 15:02:46

单边多对一与单边一对多关系相反,多的一方有一方的引用,一方没有多方引用。

例如:论文与论文类别

                                                         

表type(一方)
id int
name varchar(20)

表article(多方)
id int
type_id int
contents text
name varchar(20)
                                         

一、注解方式

配置Type类

Type实体类的Java注解比较简单。由于没有Ariticle的引用,Type就是最普通的POJO实体,主键为id属性,只有一个String类型的普通属性name。这里name属性配置为unique,保证数据库中不会重复出现数据。

@Entity
@Table(name = "type")
public class Type {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer id;
	
	@Column(unique = true)
	private String name;
        //get set 方法略
}

配置Article类

Article中有一个Type类型的属性。该属性将被配置为ManyToOne的。Article中配置了级联操作为PERSIST,如果Type对象没有被持久化,则持久化Article对象是会一并持久化Type对象。由于contents字段内容可能比较长,因此配置contents列的数据库类型为text。

@Entity
@Table(name = "article")
public class Article {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer id;
	
	@ManyToOne(cascade = {CascadeType.PERSIST}, fetch = FetchType.EAGER)
	@JoinColumn(name = "type_id")
	private Type type;
	
	private String name;
	
	@Column(columnDefinition = "text")
	private String contents;
        //get set 方法略
}

二、xml方式

配置Type类

使用<class />配置实体类,name属性指定实体类名Type,table属性指定对应的表。<id />配置主键列,<generator />配置主键为数据库自增类型,<property />属性配置普通属性。

<class name="Type" table="type">
    <id name="id" column="id">
        <generator class="native" />
    </id>
    <property name="name" />
</class>

配置Article类

注意配置contents属性时type类型配置为TEXT,表示大文本类型。使用<many-to-one />配置多对一关系,name属性指定实体类中对应的属性,column指定外键列,cascade指定级联保存选项,这里设置为persist,表示持久化时保存Type属性。not-found属性为ignore,表示如果Type不存在,则忽略,默认会抛出异常。

<class name="Article" table="article">
    <id name="id" column="id">
        <generator class="native" />
    </id>
    <property name="name"></property>
    <property name="contents" type="text"></property>
    <many-to-one name="type" column="type_id" cascade="persist" lazy="false" not-found="ignore">
    </many-to-one>
</class>




Hibernate 注解单向一对多配置

Hibernate 注解单向一对多配置
  • u012726702
  • u012726702
  • 2016年08月30日 07:54
  • 415

Hibernate中使用多对多映射注解

hibernateannotation注解方式来处理映射关系 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青...
  • JikAK1153
  • JikAK1153
  • 2015年02月17日 11:18
  • 4667

Hibernate实体映射——单边的一对多关系

数据库中的表是有关系的,两个表之间可以通过外键关联。如果把表抽象为实体类,这些关系可以抽象为实体之间的一对一,一对多,多对一等关系。hibernate能处理这些复杂的关系,前提是要正确配置这些关系。 ...
  • lmb55
  • lmb55
  • 2015年06月18日 22:18
  • 752

java xml与实体对象 互相转换

本文转载至:http://blog.csdn.net/sd4015700/article/details/39474893 最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2017年02月23日 19:51
  • 4437

使用Hibernate注解来配置多对一单向的三种方法

多对一单向(数据库设计,多在在多方设计外键)          数据库设计:主键列不可分,联合主键不可有部分依赖,不能存在传递依赖          注解中在多方的类中加入一个"一方"的类...
  • gy1055277934
  • gy1055277934
  • 2015年10月09日 14:56
  • 2521

hibernate单边的多对多关系

单边的对多对指两个实体之间是多对多关系,但是只有一个实体中有另一个实体的集合。本例引用一本书山的demo(论坛文章和文章标签)实现单边的多对多关系。 demo实例: 文章和文章标签关系,一个文章可...
  • yxtouch
  • yxtouch
  • 2015年10月06日 15:06
  • 656

Hibernate实体关系映射——双边的多对一、一对多关系

//刘梦冰发表于2015-6-18   双边的多对一、一对多关系        双边关系是最常见的配置。在多方有一方的引用,一方也有多方的引用。双边关系能够很方便的查询数据。下面以一个班级与学生的双边...
  • lmb55
  • lmb55
  • 2015年06月18日 23:15
  • 1985

4、Hibernate 实体关系映射(一、单边一对多关系 注解、xml两种方式)

单边一对多关系是指一方有集合属性,半酣
  • lihaoju
  • lihaoju
  • 2014年08月24日 18:35
  • 620

使用Hibernate注解来配置多对一单向的三种方法

多对一单向(数据库设计,多在在多方设计外键)          数据库设计:主键列不可分,联合主键不可有部分依赖,不能存在传递依赖          注解中在多方的类中加入一个"一方"的类...
  • gy1055277934
  • gy1055277934
  • 2015年10月09日 14:56
  • 2521

hibernate 注解配置一对多关系

重点学习 Hibernate fetch lazy cascade inverse 关键字 Hibernate最让人头大的就是对集合的加载形式。 书看了N次了,还是没有真正理解Hibernate。...
  • W2_Pan0125
  • W2_Pan0125
  • 2015年10月07日 19:41
  • 169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:4、Hibernate 实体关系映射(二、单边多对一关系 注解、xml两种方式)
举报原因:
原因补充:

(最多只允许输入30个字)