JPA映射Map的问题
来源:互联网 发布:j to e开发java模式 编辑:程序博客网 时间:2024/05/17 23:08
之前遇到过几次使用JPA映射Entity中的Map成员时遇到的问题,有一些注解的使用很容易混淆,所以自己在这记一下。
1. Map<String,String>的映射
这种Map的key和value都是字符串类型,或者是其他基础类型的,映射时可使用下面的方式:
@ElementCollection@CollectionTable(name="table_name")@MapKeyColumn(name="propKey")@Column(name="propValue")private Map<String,String> properties = new HashMap<String,String>();
2. Map<String,Object>的映射
key是基础类型,value是对象
@OneToMany@JoinTable(name="Amplifier_PROP",inverseJoinColumns=@JoinColumn(name="propValue"))@MapKeyColumn(name="propKey")private Map<String,DataConverter> properties = new HashMap<String,DataConverter>();
3. Map<Object,Object>的映射
key和value都是对象
@OneToMany@JoinTable(name="TestEntity_PROP",inverseJoinColumns=@JoinColumn(name="propValue"))@MapKeyJoinColumn(name="Amplifier_ID")private Map<Amplifier,DataConverter> props = new HashMap<Amplifier, DataConverter>();
4. Map<Object,String>的映射
key是对象,value是字符串或其他基础类型
@ElementCollection@CollectionTable(name="table_name")@MapKeyJoinColumn(name="propKey")@Column(name="propValue")private Map<Amplifier,String> properties = new HashMap<Amplifier,String>();
当key是基础类型或非基础类型时,需要注意注解@MapKeyColumn和@MapKeyJoinColumn,前者是专用于基础类型的,比如Integer或者String等等,后者则是用于Object
当value是对象时,使用@OneToMany形式的注解方式
以上4种方式是我自己测试过的,没问题的。也应该还有其他方式,懒的再去google的就按我这个写吧。
0 0
- JPA映射Map的问题
- jpa的基本映射
- JPA的继承映射
- JPA的关系映射
- JPA的集合映射
- 关于JPA/Hibernate的时间字段映射问题
- MAP映射问题
- JPA实体继承的映射
- jpa集合元素的映射
- JPA实体继承的映射
- JPA实体继承的映射
- JPA各种字段的映射
- Hibernate、JPA 映射字段问题[ImprovedNamingStrategy]
- map的类型映射
- JPA 映射
- JPA映射
- JPA之日期和枚举的JPA映射
- hibernate annotation对jpa主键one-to-one映射关系支持的有问题
- android gralloc 流程分析
- android 跑马灯(继承TextView)
- 51NOD 1276 岛屿的数量
- R语言|求ROC和AUC值
- 套接字
- JPA映射Map的问题
- AndroidApk混淆编译时,报告java.io.IOException: The same input jar[xxx/xxx.jar]is specified twice.
- 制表符
- Android分包MultiDex原理详解
- 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
- Android中属性资源的创建与使用
- 零基础学习网页制作(五)
- Ubuntu 12.04使用root用户登录桌面
- iOS代理方法和block的使用