Я считаю, что правильное сопоставление будет:
@Entity
public class Folder {
@Id
@Column(name="PK_FOLDER")
private int id;
@Column(name="NAME")
private String name;
@ManyToOne
@JoinColumn(name="FK_PARENT_FOLDER")
public Folder parentFolder;
@OneToMany(mappedBy="parentFolder")
public List<Folder> subFolders = new ArrayList<Folder>();
}
@OneToOne
будет работать, только если у каждого родителя не более одного ребенка, приведенный выше код работает для более общего случая, когда родитель можетиметь много детейТакже для простоты я опускаю методы get / set.