2019独角兽企业重金招聘Python工程师标准>>>

前言

最好的老师是 google,不信你去试下百度

一 @Any 的使用方法

场景:假设一个车辆类,它可以是个人或者公司拥有:

@Entity
@DiscriminatorValue("PRS")
public class Person implements VehicleOwner { ... }
@Entity
@DiscriminatorValue("CPY")
public class Company implements VehicleOwner { ... }

使用@Any注解来映射关系:

@Entity
@DiscriminatorValue("VEH")
public class Vehicle {...@Any(metaColumn=@Column(name="owner_type" , length=3),fetch=FetchType.LAZY)@AnyMetaDef(idType="long", metaType="string" ,metaValues={@MetaValue(targetEntity=Person.class, value="PRS" ),@MetaValue(targetEntity=Company.class, value="CPY" )})@JoinColumn(name="owner_id" )public VehicleOwner getOwner() { ... }public void setOwner(VehicleOwner owner) { ... }...
}
在车辆表这将产生一个二元组(owner_type,owner_id),共同确定VehicleOwner对象是Person还是Company。

二 @ManyToAny  的使用方法

场景:假设一个车辆类,它可以是多个个人或者公司拥有:

@Entity
@DiscriminatorValue("VEH")
public class Vehicle {...@ManyToAny(metaColumn = @Column( name = "owner_type" ))@AnyMetaDef(idType = "integer", metaType = "string",metaValues = {@MetaValue( targetEntity = Person.class, value="PRS" ),@MetaValue( targetEntity = Company.class, value="CPY" ) })@Cascade( { org.hibernate.annotations.CascadeType.ALL } )@JoinTable(name = "vehicle_owners", joinColumns = @JoinColumn( name = "vehicle_id" ),inverseJoinColumns = @JoinColumn( name = "owner_id" ))public List<Property> getOwners() { ... }private void setOwners(List<VehicleOwner> owners) { ... }...
}
这会生成一张vehicle_owners表(字段:vehicle_id,owner_type,owner_id)。vehicle_id识别车辆,owner_type,owner_id组合一起识别主人(无论是个人或公司)。

参考文档:http://jpaobjects.sourceforge.net/m2-site/main/documentation/docbkx/html/user-guide/ch04s09.html

转载于:https://my.oschina.net/longyuan/blog/337635

Hibernate @Any 及 @ManyToAny 使用教程相关推荐

  1. Spring MVC Hibernate MySQL集成CRUD示例教程

    Spring MVC Hibernate MySQL集成CRUD示例教程 我们在上一篇教程中学习了如何集成Spring和Hibernate.今天,我们将继续前进,并将Spring MVC和Hibern ...

  2. Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程

    Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程 Java Persistence API是标准规范.它提供了一个由不同实现者框架 ...

  3. Hibernate Tomcat JNDI DataSource示例教程

    Hibernate Tomcat JNDI DataSource示例教程 欢迎来到Hibernate Tomcat JNDI DataSource示例教程.我们已经看到如何在独立的Java应用程序中使 ...

  4. Hibernate Tomcat JNDI数据源示例教程

    Welcome to the Hibernate Tomcat JNDI DataSource example tutorial. We have already seen how to use Hi ...

  5. java hibernate 插入数据_[Java教程]hibernate 返回新插入数据的Id

    [Java教程]hibernate 返回新插入数据的Id 0 2015-08-28 10:00:11 例如 表明 studentInfoString sql="set set nocount ...

  6. primefaces教程_Primefaces,带有JPA的Spring 4(Hibernate 4 / EclipseLink)示例教程

    primefaces教程 Java Persistence API is a standard specification. It provides a persistence model that' ...

  7. hibernate示例_Hibernate条件示例教程

    hibernate示例 Welcome to the Hibernate Criteria Example Tutorial. Today we will look into Criteria in ...

  8. mvc crud_Spring MVC Hibernate MySQL集成CRUD示例教程

    mvc crud We learned how to integrate Spring and Hibernate in our last tutorial. Today we will move f ...

  9. Hibernate教程

    Hibernate教程 最近我写了很多hibernate教程.Hibernate是当前市场上最好的Java ORM工具之一.所以这篇文章就像是hibernate教程和示例的所有帖子的索引.您可以按顺序 ...

  10. hibernate教程_Hibernate教程

    hibernate教程 Recently I have written a lot of hibernate tutorial. Hibernate is one of the best Java O ...

最新文章

  1. Pytorch 中的 5 个非常有用的张量操作
  2. Java-string字符串
  3. 深入SQL SERVER 2000的内存管理机制
  4. 算法 --- 递归实现多级树展开结构
  5. 现代软件工程系列 学生的精彩文章 (5) 其实还是人的问题
  6. python 调用 tensorflow.dll_python tensorflow导入DLL加载失败
  7. linux 打zip gz tar,linux把文件压缩成.tar.gz的命令 | PT Ubuntu Blog
  8. mysql存储过程数组字符串_Mysql通过存储过程分割字符串为数组
  9. c语言程序设计删除,C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句...
  10. 运放失真罪魁祸首之压摆率和增益带宽积
  11. 通过百度BAE搭建微信二次开发的服务(2)
  12. 区块链是如何解决慈善公益项目中存在的问题呢?
  13. 根据股票代码特征分类
  14. MYSQL中日期加减(前一天、后一天等)以及格式化的函数
  15. 自然语言处理(NLP)发展历程(1),什么是自然语言处理?
  16. swap (虚拟内存)
  17. ACP学习笔记(云计算)附题
  18. 阿里官方Java代码规范标准解析 - 基本数据类型与包装数据类型的使用标准
  19. mint-ui 各个组件示例
  20. mac怎么向阿里云服务器上传文件,无需下载其他,自带终端就可以。

热门文章

  1. PyTorch:tensor-数据处理
  2. Android程序设置软件图标
  3. python语言开发环境配置理论_python语言开发环境配置
  4. 蓝桥杯2015年第六届C/C++A组国赛第四题-穿越雷区
  5. Dart基础第14篇: 库 自定义库、系统库、第三方库
  6. rk3399_android7.1平台调试sensor流程记录
  7. leetcode 448. 找到所有数组中消失的数字(Find All Numbers Disappeared in an Array)
  8. 从zabbix的数据库获取数据
  9. :hover 鼠标悬浮时(基本导航)
  10. django通用视图(类方法)