我想知道是否可以使用批注attributes使用JPA2 将地图持久化到以下类中
attributes
public class Example { long id; // .... Map<String, String> attributes = new HashMap<String, String>(); // .... }
由于我们已经有一个现有的生产数据库,因此理想情况下,值attributes 可以映射到以下现有表:
create table example_attributes { example_id bigint, name varchar(100), value varchar(100));
JPA 2.0通过@ElementCollection注释可以支持原语集合,你可以将其与java.util.Map集合支持一起使用。这样的事情应该起作用:
@ElementCollection
java.util.Map
@Entity public class Example { @Id long id; // .... @ElementCollection @MapKeyColumn(name="name") @Column(name="value") @CollectionTable(name="example_attributes", joinColumns=@JoinColumn(name="example_id")) Map<String, String> attributes = new HashMap<String, String>(); // maps from attribute name to value }
另请参见(在JPA 2.0规范中)