Java JPA/Hibernate中不区分大小写的名称/值映射
我试图在实体和名称/值对映射之间建立@OneToMany关系,其中映射查找不区分大小写 我已经找到了可以解决部分问题的元素(String.CASE\u INSENSITIVE\u ORDER、@SortComparator等等),但我正在努力以一种优雅的方式将这些元素组合在一起,因此,如果有任何帮助,我将不胜感激 代码本身相当简单Java JPA/Hibernate中不区分大小写的名称/值映射,java,hibernate,jpa,Java,Hibernate,Jpa,我试图在实体和名称/值对映射之间建立@OneToMany关系,其中映射查找不区分大小写 我已经找到了可以解决部分问题的元素(String.CASE\u INSENSITIVE\u ORDER、@SortComparator等等),但我正在努力以一种优雅的方式将这些元素组合在一起,因此,如果有任何帮助,我将不胜感激 代码本身相当简单 @Entity public class Gizmo [ private String name; private Map<String,
@Entity
public class Gizmo [
private String name;
private Map<String, GizmoData> data = new HashMap<String, GizmoData>();
public String getName() {
return name;
}
@OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true, mappedBy = "gizmo", fetch = FetchType.EAGER)
@MapKeyColumn(name = "name")
public Map<String, GizmoData> getData() {
return this.data;
}
@Transient
public String getDataValue(String key) {
GizmoData nvData = this.data.get(key);
return (nvData != null ? nvData.getValue() : null);
}
public void setDataValue(String key, String value) {
GizmoData nvData = new GizmoData(this, key, value);
this.data.put(key, nvData);
}
]
@Entity
public class GizmoData {
private Gizmo gizmo;
private String name;
private String value;
public GizmoData(Gizmo gizmo, String name, String value) {
this.gizmo = gizmo;
this.name = name;
this.value = value;
}
@ManyToOne
@JoinColumn(name = "gizmoId", nullable = false)
public Arrangement getGizmo() {
return gizmo;
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
}
@OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true, mappedBy = "gizmo", fetch = FetchType.EAGER)
@MapKeyColumn(name = "name")
@SortComparator(value String.CASE_INSENSITIVE_ORDER)