W międzyczasie próbowałam jeszcze z @MapKeyColumn i doszłam do czegoś takiego:
@Entity
@Table(name = "USER_PROPERTIES")
public class UserProperties implements Serializable {
@Id
@Column(name = "ID_USER")
private Integer id;
@ElementCollection
@MapKeyColumn(name = "PROP_KEY")
@Column(name = "PROP_VALUE")
@CollectionTable(name = "USER_PROPERTIES", joinColumns = @JoinColumn(name = "ID_USER"))
private Map<String, String> properties = new HashMap();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Map<String, String> getProperties() {
return properties;
}
public void setProperties(Map<String, String> properties) {
this.properties = properties;
}
}
To jest JSON jaki wypluło, wydaje się działać ale jeszcze będę to testować:
{"id":1,"properties":{"first_prop":"Value1","next_prop":"Value2"}}
Nie mam pojęcia natomiast, które rozwiązanie jest lepsze- to przedstawione przez @Koziołek czy to z @ElementCollection, np. z punktu widzenia wydajności i szybkości działania.