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