2017-08-18 10 views
1

ハイバネートを使用してデータベース内にエンティティを格納しようとしています。私は、次のクラスを持っている:mappedBy reference継承を持つ未知のターゲットエンティティプロパティ

@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 */ 

実験ノードグループは、次のようになります。

@Entity 
public class ExperimentNodeGroup extends NodeGroup { 

private List<Node> nodes = new ArrayList<>(); 
/* More getters and setters for other attributes */ 

そして、ノード・グループクラスは次のようになります。私がコンパイルしようとすると、今

@Entity 
public abstract class NodeGroup extends GeneratedIdEntity { 
protected Experiment experiment; 

@ManyToOne(optional = false) 
@JsonIgnore 
public Experiment getExperiment() { 
    return experiment; 
} 
/* More getters and setters for other attributes */ 

Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: [...].ExperimentNodeGroup.experiment in [...].UsableRemoteExperiment.nodeGroups

答えて

0
:コード、私はこのエラーを取得します

私はここの問題は、あなたがセッターを置く必要があることだと思います。ハイバーネイトは、データベースから取得するゲッターがあれば、セッターを読む必要があります。セッターを置くか、

@Entity(access = AccessType.FIELD) 

あなたの属性に注釈を入れてください。

+0

はい、私はセッターを持っている、それだけで誤って私がExperimentNodeGroupにそれを設定する他のセッター – Jan

0

それはmappedByと継承に期待どおりに動作しない休止状態の癖の一つです。 targetEntityも指定してみてください。

The entity class that is the target of the association. Optional only if the collection property is defined using Java generics. Must be specified otherwise.

あなたはtargetEntity = ExperimentNodeGroup.classまたはtargetEntity = Transaction.classを指定してみてください、それがすべての違いを作るかどうかを確認することができます:Here'sドキュメントと、これは、それが言うことです。

+0

を削除したときは何も変更されません削除されました。これをトランザクションに設定すると、次のエラーが発生します: '' @OneToManyまたは@ManyToManyを使用してマッピングされていないクラスをターゲットにしています:[...] UsableRemoteExperiment.nodeGroups [javax.transaction.Transaction] '' – Jan

+0

'org.hibernate代わりに.transaction'ですか? –

+0

私はすでに同じことをしています。私は今、「汚れた回避策」を使用しています。私は実験の属性を子クラスに移動しました....もっと良い方法があれば試してみましょうが、今のところ動作します – Jan

関連する問題