1.many-to-one

@ManyToOne
@JoinColumn(name = "user_id")

 2.many-to-many

/**
* 双向关联关系中,有且仅有一端是作为主体(owner)端存在的,
* 主体端负责维护联接列,对于不需要维护这种关系的从表则通过mappedBy属性进行声明, mappedBy的值指向主体的关联属性.
* joinColumns写的都是本表在中间表的外键名称, inverseJoinColumns写的是另一个表在中间表的外键名称。
* mappedBy跟JoinColumn/JoinTable总是处于互斥的一方. fetch=FetchType.EAGER
* 立即加载,默认为fetch=FetchType.LAZY 懒惰加载
*
* Set<>中使用了泛型,此处也可以不用指定 targetEntity属性。
*
*/

/** 积分指标项实体--many to many */
private java.util.Set<IntegrationItem> integrationItem = new java.util.HashSet<IntegrationItem>();

	@ManyToMany(fetch = FetchType.LAZY)
@Cascade(value = org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinTable(name = "sem_R_key_proitem", joinColumns = { @JoinColumn(name = "key_person_id") }, inverseJoinColumns = { @JoinColumn(name = "itegration_item_id") })
@OrderBy("id asc")
public java.util.Set<IntegrationItem> getIntegrationItem() {
return integrationItem;
} public void setIntegrationItem(
java.util.Set<IntegrationItem> integrationItem) {
this.integrationItem = integrationItem;
} 
/**
* mappedBy的值指向主体的关联属性 双向关联关系中,有且仅有一端是作为主体(owner)端存在的,
* 主体端负责维护联接列,对于不需要维护这种关系的从表则通过mappedBy属性进行声明, mappedBy的值指向主体的关联属性.
* mappedBy="roles" 表示 Authority为主控方,由Role维护Account相关操作。
*/

/** 重点人员信息实体--many to many */
private Set<PersonInfo> personInfo = new HashSet<PersonKeyInfo>();

	@ManyToMany(targetEntity = com.future.sem.entity.PersonInfo.class, mappedBy = "integrationItem", fetch = FetchType.LAZY)
public Set<PersonInfo> getPersonInfo() {
return personInfo;
}

3.one-to-one

/**
* @OneToOne:一对一关联
* mappedBy = "account":这里的一对一配置参考了account
* account是RegisteredUser类中的getAccount(), 不是RegisteredUser类中的
* account属性,RegisteredUser类中的OneToOne配置就是在getAccount()方法上面配的.
*/

  

@OneToOne(optional=false,mappedBy="account")
public RegisteredUser getRegisteredUser() {
return registeredUser;
}

  

/**
* 双向关联关系中,有且仅有一端是作为主体(owner)端存在的,
* 主体端负责维护联接列,对于不需要维护这种关系的从表则通过mappedBy属性进行声明, mappedBy的值指向主体的关联属性
*/
// cascade:级联,它可以有有五个值可选,分别是:
// * CascadeType.PERSIST:级联新建
// * CascadeType.REMOVE : 级联删除
// * CascadeType.REFRESH:级联刷新
// * CascadeType.MERGE : 级联更新
// * CascadeType.ALL : 以上全部四项
// @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, targetEntity
// = com.future.sem.entity.Account.class)
@OneToOne(optional = false, fetch = FetchType.LAZY)
@Cascade(value = org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "sem_account_id", nullable = true, unique = true)
public Account getAccount() {
return account;
}

  单向关联表:在当前的实体中保存personinfo的id,但不对原来的基础表进行任何操作

	@OneToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "person_info_id", unique = true, nullable = false, updatable = false)
public PersonInfo getPersonInfo() {
return personInfo;
}

  

hibernate的注解的更多相关文章

  1. Java、Hibernate(JPA)注解大全

    1.@Entity(name=”EntityName”) 必须,name为可选,对应数据库中一的个表 2.@Table(name=””,catalog=””,schema=””) 可选,通常和@Ent ...

  2. hibernate annotation注解方式来处理映射关系

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...

  3. 批量产生ssh2项目中hibernate带注解的pojo类的快捷方法

    近几个月一直在忙于项目组的ios应用项目的开发,没有太多时间去研究web应用方面的问题了.刚好,昨天有网友问到如何批量产生hibernate带注解的pojo类的快捷方法,所谓批量就是指将当前数据库中所 ...

  4. Hibernate Annotations 注解

    Hibernate Annotations 注解 对于org.hibernate.annotations与org.hibernate.persistence,它的注释比如Columns,可是不知道怎么 ...

  5. Hibernate中用注解配置一对多双向关联和多对一单向关联

    Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解 ...

  6. Hibernate基于注解annotation的配置

    Annotation在框架中是越来越受欢迎了,因为annotation的配置比起XML的配置来说方便了很多,不需要大量的XML来书写,方便简单了很多,只要几个annotation的配置,就可以完成我们 ...

  7. 2.2、Hibernate用注解方式实现一对多、多对多关系

    一.一对多关系 1.在上一篇日志中用.xml配置文件项目基础上,再往lib目录先添加一个包-hibernate-jpa-2.0-api-1.0.0.Final.jar 2.新建一个com.st.bea ...

  8. hibernate用注解替代映射文件

    1.首先把原来的映射文件删掉,给实体类添加注解: @Entity //声明当前类为hibernate映射到数据库中的实体类 @Table(name="news") //声明tabl ...

  9. Hibernate+Oracle注解式完整实例

    MyEclipse10,新建Web Project,取名hibernate, jar包 1.Cat.java (实体类) package com.hibernate.bean; import java ...

  10. Hibernate用注解实现实体类和表的映射

    数据库mysql: 1.一对一 person50表password50表是一对一的关系: password50表中有外键 person_id person实体类: package com.c50.en ...

随机推荐

  1. MFC——ComBox用法大全

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

  2. 基于ndk_r7_windows编译实现ndk项目,不需要cygwin

    下面就介绍下Android NDK的入门学习过程: 入门的最好办法就是学习Android自带的例子, 这里就通过学习Android的NDK自带的demo程序:hello-jni来达到这个目的. 一. ...

  3. Codevs 3112 二叉树计数

    3112 二叉树计数 题目描述 Description 一个有n个结点的二叉树总共有多少种形态 输入描述 Input Description 读入一个正整数n 输出描述 Output Descript ...

  4. Metabolic Signatures of Cystic Fibrosis Identified in Dried Blood Spots For Newborn Screening Without Carrier Identification (文献分享一组-孔楠楠)

    题目:Metabolic Signatures of Cystic Fibrosis Identified in Dried Blood Spots For Newborn Screening Wit ...

  5. LVS 负载均衡器总结

    下面部分原理部分,是从网上摘录,源网址已经无从获取,我将其中一小部分模糊的说明加入了一些自己的理解,仅最大可能让全文容易阅读,也方便自己以后参考,若你是大牛希望能给我一些宝贵的建议,将理解有误的地方加 ...

  6. [Python]IndentationError: unindent does not match any outer indentation level

    这个是缩进没对齐 可能是混用了tab与空格,到这里显示空白就可以看出来.

  7. VLAN-6-VLAN Trunk协议(VTP)

    VTP能够将VLAN配置信息通告给邻居交换机,这样做可以使工程师只在一台交换机上配置VLAN,同一个VTP域中的所有其他交换机动态学习这些VLAN信息.VTP通告VLAN ID.VLAN 名称和 VL ...

  8. Qt 进程和线程之三:线程同步、可重入与线程安全

    一.同步线程方法 使用线程的目的是允许代码并行运行,但是有时线程必须停止并等待其他线程.例如,如果两个线程试图同时写入相同的变量,结果是不确定的,所以需要同步线程.同步线程是一种保护共享资源等数据的常 ...

  9. 牛客练习赛42A(字符串)

    传送门 结论是:一定是选取最长的那个AB连续子串. 把题面要求的a*b + a + b转化一下成(a + 1)*(b + 1) - 1,即可发现如果选取前缀后缀不连续的两段作为答案,则显然有更优解,即 ...

  10. unix&linux常用命令分类表

    本附录([美]哈恩:<Unix&Linux大学教程>附录B,张杰良译,清华大学出版社,2010年)摘要描述了书中所涉及的143个Unix使命,并且按照命令的类别进行排列.在每个名称 ...