Composite - очень базовое отображение спящего режима, и оно не должно быть проблемой.
Но я не понимаю картирование. Я предполагаю, что FOLDER_FILELOCATION является LinkTable между папкой и FileInformation. Если это так, то на самом деле у вас нет отношения OneToMany, но есть отношение к ManyToMany. Но вы можете отобразить его как OneToMany.
С какой точностью вы сталкиваетесь?
Чтобы получить более точные ответы, потратьте еще немного времени на объяснение вашей конкретной проблемы. Форматирование данного кода также помогает, но хорошо, я попробую.
Я не совсем уверен, но я думаю, основываясь на модели, я полагаю, у вас есть, вы должны попробовать это:
public interface Hierarchy(){
// a few abstract methods that will be implemented by the sub classes
}
@Entity
@Table(name = "FOLDER_TABLE")
public class Folder implements Hierarchy, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "folder_id", updatable = false, nullable = false)
private int id;
@OneToMany
@JoinTable(
name="FOLDER_FILELOCATION",
joinColumns = @JoinColumn( name="folder_id"),
inverseJoinColumns = @JoinColumn( name="filelocation_id")
)
private List<Hierarchy> children = new ArrayList<Hierarchy>() ;
@Column(name = "folder_name")
private String folderName;
@Column(name = "tree_item")
private TreeItem item;
@Column (name = "parent")
private Hierarchy parent;
}
@Entity
@Table(name = "FILE_INFORMATION_TABLE")
public class FileInformation implements Hierarchy, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "file_information_id", updatable = false, nullable = false)
private int fiId;
@Column (name = "location")
private String location;
@Column(name = "tree_item")
private TreeItem item;
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinTable(name="FOLDER_FILELOCATION",
joinColumns = @JoinColumn(name="filelocation_id"),
inverseJoinColumns = @JoinColumn(name="folder_ID")
)
private Hierarchy parent;
}
Надеюсь, это поможет.