Java JPA/Hibernate中不区分大小写的名称/值映射

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,

我试图在实体和名称/值对映射之间建立@OneToMany关系,其中映射查找不区分大小写

我已经找到了可以解决部分问题的元素(String.CASE\u INSENSITIVE\u ORDER、@SortComparator等等),但我正在努力以一种优雅的方式将这些元素组合在一起,因此,如果有任何帮助,我将不胜感激

代码本身相当简单

@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)