无法在 JPA @Entity类中声明 List 属性。它说“基本”属性类型不应该是容器

2022-09-01 03:37:32

我有一个 JPA ,其中一些属性保存有关地点的一些信息,例如地名,描述和某些图像的URL。@Entity class Place

对于图像的 URL,我在我的实体中声明了一个。List<Link>

enter image description here

但是,我收到此错误:

Basic attribute type should not be a container.

我试图删除,但错误消息仍然存在。为什么它会显示此错误?@Basic


答案 1

您还可以使用:@ElementCollection

@ElementCollection
private List<String> tags;

答案 2

您很可能缺少关系(如)注释和/或注释。@OneToMany@Entity

我在以下方面遇到了同样的问题:

@Entity
public class SomeFee {
    @Id
    private Long id;
    private List<AdditionalFee> additionalFees;
    //other fields, getters, setters..
}

class AdditionalFee {
    @Id
    private int id;
    //other fields, getters, setters..
}

additionalFees是导致问题的字段。

我错过了什么,对我有帮助的是:

  1. @Entity泛型类型参数 () 类上的注释;AdditionalFee
  2. @OneToMany(或任何其他适合您情况的适当关系)在字段上的注释。private List<AdditionalFee> additionalFees;

因此,工作版本如下所示:

@Entity
public class SomeFee {
    @Id
    private Long id;
    @OneToMany
    private List<AdditionalFee> additionalFees;
    //other fields, getters, setters..
}
    
@Entity
class AdditionalFee {
    @Id
    private int id;
    //other fields, getters, setters..
}

推荐