我正試圖用JPA實現一些樹狀結構。 我有一個「文件夾」實體和一個「測試」實體。文件夾可以包含文件夾和測試。測試不包含任何東西。JPA中的超類實體屬性的雙向關係
兩種測試和文件夾中有一個節點超,看起來是這樣的:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Node implements TreeNode, Serializable{
private Long id;
String description;
String name;
@ManyToOne
Node parent;
...getters, setters and other stuff that doesnt matter...
}
這裏是文件夾類:
@Entity
public class Folder extends Node{
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade=CascadeType.ALL, **mappedBy="parent"**)
List<Folder> folders;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade=CascadeType.ALL, **mappedBy="parent"**)
List<Test> tests;
...
}
所以,主要的問題是mappedBy屬性,它涉及到父類屬性在祖先中沒有被覆蓋,導致我得到這樣的異常:
Exception while preparing the app : mappedBy reference an unknown target entity property: my.test.model.Folder.parent in my.test.model.Folder.folders
Folder類的「文件夾」和「測試」屬性可能存在一些棘手的映射,我需要一些幫助。
編輯:我指定的文件夾和與targetEntity = Node.class文件夾類的測試性能:
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent",targetEntity=Node.class)
List<Folder> folders;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent",targetEntity=Node.class)
List<Test> tests;
而且其得到的工作。但工作不好。現在測試和文件夾映射到都屬性(我不知道爲什麼我不geting例外),當我需要分開得到它們。
所以我仍然在尋找一個合適的映射來實現這一點。我會appriciate任何幫助。
感謝您的回覆,我會試試這個。 – user976426
節點統一了文件夾和測試常用的幾個字段,例如名稱,說明,所有者等。另一方面,我試圖實現Swing提供的TreeNode接口(因爲RichFaces可以使用它),所以這個結構對我來說更加簡單。 – user976426