要件には複数の親と複数の子を含めることができるため、それ自体に対して多対多の関係を持つテーブルを持つテーブルに問題があります。基本的に、NetBeans ウィザードを使用してデータベースからエンティティを作成しましたが、それ以外はすべて正常に動作しているようです。しかし、この親子関係の単体テストを行うと、失敗し始めました。基本的に、子を要件に追加すると、その子は親を子として持つことになります。
同じキーを指す2つの列を持つ JoinTable に何らかの形で関連していると思います。
これをマッピングする関連エンティティ コードは次のとおりです。
@JoinTable(name = "requirement_has_requirement", joinColumns = {
@JoinColumn(name = "requirement_id", referencedColumnName = "id"),
@JoinColumn(name = "requirement_version", referencedColumnName = "version")}, inverseJoinColumns = {
@JoinColumn(name = "parent_requirement_id", referencedColumnName = "id"),
@JoinColumn(name = "parent_requirement_version", referencedColumnName = "version")})
@ManyToMany
private List<Requirement> requirementList;
@ManyToMany(mappedBy = "requirementList")
private List<Requirement> requirementList1;
必要な場合は、 https://javydreamercsw@bitbucket.org/javydreamercsw/validation-managerからコードを取得できます。
編集 実際には機能しないため、質問に答えるのは困難です。理論的には、requirementList には子があり、requirementList1 は関係の親である必要があります。
子供を追加しようとすると、次のようにします。
requirement.getRequirementList().add(requirement2);
<Persist requirement here>
2 つの要件が適切で有効なエンティティであると仮定します。