Java 是否可以使用列作为hashmap的键来创建一对一映射?

Java 是否可以使用列作为hashmap的键来创建一对一映射?,java,hibernate,orm,hibernate-mapping,hibernate-5.x,Java,Hibernate,Orm,Hibernate Mapping,Hibernate 5.x,假设我有一个类,其中所有字段都是整数: @Entity public class Bar implements Serializable { @Id private Integer id; @Basic private Integer field1; @Basic private Integer field2; //Constructor & getters/setters omitted } 现在我希望有另一个类Foo,

假设我有一个类,其中所有字段都是整数:

@Entity
public class Bar implements Serializable { 
    @Id
    private Integer id;

    @Basic
    private Integer field1;

    @Basic
    private Integer field2;

    //Constructor & getters/setters omitted
}
现在我希望有另一个类
Foo
,它有一个HashMap,其中键是
Bar
中具有相应值的字段。也就是说,类似这样的事情:

@Entity
public class Foo implements Serializable {
   @Id
   private Integer id;

   @Basic
   private String someString;

   @Basic
   private Integer someInteger;

   @??
   private HashMap<String, Integer> barMap;

   //Constructor & getters/setters omitted

对未来的访客:

@Id
@Column(name = "id", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;

@Column(name="enumField", nullable = false)
@Enumerated(EnumType.ORDINAL)
private EnumType enumField;

@Basic
@Column(name="myField")
private int myField = 0;

@ManyToOne
@JoinColumn(name="fooInstance", nullable = false)
private Foo fooInstance;
我找不到任何方法来实现这一点,我意识到这可能是因为它不是好的设计/实践。相反,我最终重新设计了我的
Bar
类,使其字段现在成为枚举和值,基本上转换了表。然后,
Foo
类就有了一个
Map
。注释如下:

Foo

@OneToMany(mappedBy="fooInstance", cascade = CascadeType.ALL)
@MapKey(name="enumField")
private Map<EnumType, Bar> barMap;
@Id
@Column(name = "id", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;

@Column(name="enumField", nullable = false)
@Enumerated(EnumType.ORDINAL)
private EnumType enumField;

@Basic
@Column(name="myField")
private int myField = 0;

@ManyToOne
@JoinColumn(name="fooInstance", nullable = false)
private Foo fooInstance;