Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想绘制一张地图<;长,列表<;POJO>&燃气轮机;通过JPA_Java_Hibernate_Jpa_Annotations_Mapping - Fatal编程技术网

Java 我想绘制一张地图<;长,列表<;POJO>&燃气轮机;通过JPA

Java 我想绘制一张地图<;长,列表<;POJO>&燃气轮机;通过JPA,java,hibernate,jpa,annotations,mapping,Java,Hibernate,Jpa,Annotations,Mapping,我想在一个@Entity类中映射一个映射,其中ItemAttribute本身是一个单独定义的@Entity 以下是我用于映射的代码: @Entity @Table(name = "ITEM_ATTRIBUTE_GROUP") public class ItemAttributeGroup implements Cloneable, Serializable { @ElementCollection @MapKeyColumn(name="groupId") @

我想在一个
@Entity
类中映射一个
映射
,其中ItemAttribute本身是一个单独定义的
@Entity

以下是我用于映射的代码:

@Entity
@Table(name = "ITEM_ATTRIBUTE_GROUP")
public class ItemAttributeGroup implements Cloneable, Serializable
{
      @ElementCollection
      @MapKeyColumn(name="groupId")
      @JoinTable(name = "ATTRIBUTES_IN_GROUP", joinColumns = @JoinColumn(name = "groupId"),
                        inverseJoinColumns = @JoinColumn(name = "ID"))
      private Map<Long, List<ItemAttribute>> attributes = new HashMap<Long, List<ItemAttribute>>();
     //getters and setters........
}
@实体
@表(name=“项目属性组”)
公共类ItemAttributeGroup实现可克隆、可序列化
{
@元素集合
@MapKeyColumn(name=“groupId”)
@JoinTable(name=“ATTRIBUTES\u IN\u GROUP”,joinColumns=@JoinColumn(name=“groupId”),
inverseJoinColumns=@JoinColumn(name=“ID”))
私有映射属性=新HashMap();
//接受者和接受者。。。。。。。。
}
ItemAttribute是下面提到的一个单独的类:

@Entity
@Table(name = "ITEM_ATTRIBUTE")
public class ItemAttribute implements Cloneable, Serializable {
    private static final long serialVersionUID = -8017036630979138942L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ID")
    private Long id;

    @ElementCollection // this is a collection of primitives
    @JoinTable(name="ATTRIBUTE_VALUE_RANGE", joinColumns=@JoinColumn(name="ID"))
    @MapKeyColumn (name="RANGE_ID")// column name for map "key"
    @Column(name="VALUE")//  column name for map "value"
    private Map<String, String> attributeValueRange = new HashMap<String, String>();

    @ElementCollection // this is a collection of primitives
    @JoinTable(name="QUALIFIER_VALUE_RANGE", joinColumns=@JoinColumn(name="ID"))
    @MapKeyColumn (name="RANGE_ID")// column name for map "key"
    @Column(name="VALUE")//  column name for map "value"
    private Map<String, String> qualifierValueRange = new HashMap<String, String>();

    public Map<String, String> getAttributeValueRange() {
        return attributeValueRange;
    }

    public void setAttributeValueRange(Map<String, String> attributeValueRange) {
        this.attributeValueRange = attributeValueRange;
    }

    public Map<String, String> getQualifierValueRange() {
        return qualifierValueRange;
    }

    public void setQualifierValueRange(Map<String, String> qualifierValueRange) {
        this.qualifierValueRange = qualifierValueRange;
    }
}
@实体
@表(name=“ITEM\u属性”)
公共类ItemAttribute实现可克隆、可序列化{
私有静态最终长serialVersionUID=-8017036630979138942L;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“ID”)
私人长id;
@ElementCollection//这是一个原语集合
@JoinTable(name=“ATTRIBUTE\u VALUE\u RANGE”,joinColumns=@JoinColumn(name=“ID”))
@MapKeyColumn(name=“RANGE\u ID”)//映射“key”的列名
@Column(name=“VALUE”)//映射“VALUE”的列名
私有映射attributeValueRange=新HashMap();
@ElementCollection//这是一个原语集合
@JoinTable(name=“QUALIFIER\u VALUE\u RANGE”,joinColumns=@JoinColumn(name=“ID”))
@MapKeyColumn(name=“RANGE\u ID”)//映射“key”的列名
@Column(name=“VALUE”)//映射“VALUE”的列名
私有映射限定符ValueRange=新HashMap();
公共映射getAttributeValueRange(){
返回attributeValueRange;
}
public void setAttributeValueRange(映射attributeValueRange){
this.attributeValueRange=attributeValueRange;
}
公共地图getQualifierValueRange(){
返回限定符valuerange;
}
public void setQualifierValueRange(映射限定符ValueRange){
this.qualifierValueRange=限定符ValueRange;
}
}
问题出在我的代码中的某个地方,我无法识别。 我得到了这个错误

针对未映射类使用@JoinTable.inverseJoinColumns: ItemAttributeGroup.attributes[java.util.List]


您需要创建一个中间类ItemAttributes

@Entity
public class ItemAttributes {

   @OneToMany
   private List<ItemAttribute> attributes;
}

@Entity
public class ItemAttributeGroup implements Cloneable, Serializable {

   @OneToMany
   private Map<Long, ItemAttributes> attributesMap;
}
@实体
公共类ItemAttributes{
@独身癖
私有列表属性;
}
@实体
公共类ItemAttributeGroup实现可克隆、可序列化{
@独身癖
私有地图属性地图;
}

您需要创建一个中间类ItemAttributes

@Entity
public class ItemAttributes {

   @OneToMany
   private List<ItemAttribute> attributes;
}

@Entity
public class ItemAttributeGroup implements Cloneable, Serializable {

   @OneToMany
   private Map<Long, ItemAttributes> attributesMap;
}
@实体
公共类ItemAttributes{
@独身癖
私有列表属性;
}
@实体
公共类ItemAttributeGroup实现可克隆、可序列化{
@独身癖
私有地图属性地图;
}

对不起。我已经做了编辑。我也应该使用@Column注释,但我无法确定在这种情况下如何映射映射的值字段。对不起。我已经做了编辑。我也应该使用@Column注释,但在这种情况下,我无法确定如何映射映射映射的值字段。如果不添加此中间类,这是不可能的吗?据我所知,添加一个中间类是唯一的选择way@overmeulen,我相信那张地图一定是一张“OneToMany”?sharakan,我只是重复使用了问题中指定的注释,但你是对的。我编辑了我的帖子,但我也在另一张地图上使用了@ElementCollection。它工作得很好。不添加这个中间类是不可能的吗?据我所知,添加一个中间类是唯一的选择way@overmeulen,我相信地图必须是@OneToMany?@sharakan,我只是重复使用了问题中指定的注释,但你是对的。我编辑了我的帖子,但我也在另一张地图上使用了@ElementCollection。它很好用。