Java 无法在JPA@Entity类中声明List属性。上面写着';基本';属性类型不应是容器

Java 无法在JPA@Entity类中声明List属性。上面写着';基本';属性类型不应是容器,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个JPA@Entity-class-Place,其中的一些属性包含一些关于某个地方的信息,比如地方名称、描述和一些图像的URL 对于图像的URL,我在实体中声明了一个列表 但是,我遇到了以下错误: 基本属性类型不应是容器。 我试图删除@Basic,但错误消息仍然存在。我不知道为什么会出现这种错误 有什么帮助吗?如消息所述,@Basic不应用于容器(例如Java集合)。它仅用于有限的基本类型列表。删除该字段上的@Basic注释 如您在问题中所说,如果错误消息仍然存在,您可能需要依次尝试以下

我有一个JPA
@Entity-class-Place
,其中的一些属性包含一些关于某个地方的信息,比如地方名称、描述和一些图像的URL

对于图像的URL,我在实体中声明了一个
列表

但是,我遇到了以下错误:

基本属性类型不应是容器。

我试图删除
@Basic
,但错误消息仍然存在。我不知道为什么会出现这种错误


有什么帮助吗?

如消息所述,
@Basic
不应用于容器(例如Java集合)。它仅用于有限的基本类型列表。删除该字段上的
@Basic
注释

如您在问题中所说,如果错误消息仍然存在,您可能需要依次尝试以下步骤:

  • 保存文件
  • 关闭并重新打开该文件
  • 清理和重建项目
  • 重新启动IDE

  • (这些是通用步骤,我在IDE生成编译错误时使用这些步骤,编译错误显然毫无意义。)

    该错误似乎对GAE没有影响,因为我可以运行应用程序并将数据存储到存储器中。我想这是IntelliJ IDEA中的一个bug,你可以忽略它


    将列表类型的
    @basic
    更改为
    @OneToMany
    ,当类缺少@Entity注释时,也会发生这种情况。当您收到这些奇怪的警告时,有时尝试编译并查看编译器是否有问题会有所帮助。

    您很可能缺少关系(如
    @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..
    }
    

    您还可以使用
    @ElementCollection

    @ElementCollection
    private List<String> tags;
    
    @ElementCollection
    私有列表标签;
    
    谢谢Robin,但不幸的是没有成功:(我正在试图找出问题所在。删除“@Entity(name=“Book”)”将消除错误消息,但是,我认为这不是正确的方法。任何基本JPA(2)文档会说字符串列表需要ElementCollection注释。至于为什么在使用Java时引用Python文档……这不是一个bug——如果一个实体拥有另一个实体的列表,这意味着“一对多”关系,而不是“基本”字段。如果您添加@OneToMany注释,IDE中的错误将消失。@我也认为这个答案是错误的。。IDE错误与这个问题无关。