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
原创粉丝点击