Java mappedBy引用具有继承的未知目标实体属性

Java mappedBy引用具有继承的未知目标实体属性,java,hibernate,inheritance,Java,Hibernate,Inheritance,我正试图用hibernate在数据库中存储一个实体。我有以下课程: @Entity public class UsableRemoteExperiment extends RemoteExperiment { private List<ExperimentNodeGroup> nodeGroups = new ArrayList<>(); @OneToMany(mappedBy = "experiment", cascade = CascadeType.ALL, or

我正试图用hibernate在数据库中存储一个实体。我有以下课程:

@Entity
public class UsableRemoteExperiment extends RemoteExperiment {
private List<ExperimentNodeGroup> nodeGroups = new ArrayList<>();


@OneToMany(mappedBy = "experiment", cascade = CascadeType.ALL, orphanRemoval = true)
public List<ExperimentNodeGroup> getNodeGroups() {
    return nodeGroups;
}

public void setNodeGroups(final List<ExperimentNodeGroup> nodeGroups) {
    this.nodeGroups = nodeGroups;
}
/* More getters and setters for other attributes */
现在,当我尝试编译代码时,出现以下错误:

原因:org.hibernate.AnnotationException:mappedBy引用 未知的目标实体属性: […]实验nodegroup.实验 在里面 […]UsableRemoteExperiment.NodeGroup


我认为这里的问题是,您还需要设置一个setter,hibernate假设如果您有一个getter从数据库中获取,您将需要一个setter来读取它,您可以设置一个setter,或者使用

@Entity(access = AccessType.FIELD)

然后将注释放在属性上。

我认为这里的问题是您还需要放一个setter,hibernate假设如果您有一个getter从数据库中获取,您将需要一个setter从中读取,您可以放一个setter,或者使用

@Entity(access = AccessType.FIELD)

并将注释放在属性上。

这是hibernate的一个怪癖,它在
mappedBy
和继承中无法正常工作。您是否可以尝试同时指定
targetEntity
?这是一份文件,上面写着:

作为关联目标的实体类。仅可选 如果集合属性是使用Java泛型定义的。必须是 另有规定


您可以尝试指定
targetEntity=ExperimentNodeGroup.class
targetEntity=Transaction.class
,看看这是否有什么区别。

这是hibernate的一个怪癖,它在
mappedBy
和继承中无法按预期工作。您是否可以尝试同时指定
targetEntity
?这是一份文件,上面写着:

作为关联目标的实体类。仅可选 如果集合属性是使用Java泛型定义的。必须是 另有规定


您可以尝试指定
targetEntity=ExperimentNodeGroup.class
targetEntity=Transaction.class
,看看这是否有什么区别。

是的,我有一个setter,只是在删除其他setter时意外删除了它是的,我有一个setter,当我删除其他设置时,它只是意外地被删除了。将它设置为“实验节点组”不会改变任何东西。将其设置为transaction会生成以下错误:
使用@OneToMany或@ManyToMany以未映射的类为目标:[……]。UsableRemoteExperience.nodeGroups[javax.transaction.transaction]
您可以改为尝试
org.hibernate.transaction
吗?我已经尝试过了,它具有相同的效果。现在我已经使用了“肮脏的变通方法”:我将实验属性移到了子类。。。。如果有更好的方法,我会尝试,但现在它工作设置为实验nodegroup不会改变任何事情。将其设置为transaction会生成以下错误:
使用@OneToMany或@ManyToMany以未映射的类为目标:[……]。UsableRemoteExperience.nodeGroups[javax.transaction.transaction]
您可以改为尝试
org.hibernate.transaction
吗?我已经尝试过了,它具有相同的效果。现在我已经使用了“肮脏的变通方法”:我将实验属性移到了子类。。。。如果有更好的方法,我会尝试,但现在它的工作
@Entity(access = AccessType.FIELD)