2011-12-21 2 views

risposta

15

credo che la mappatura corretta sarebbe:

@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>(); 

} 

Il @OneToOne funzionerebbe solo se ciascun genitore ha avuto al massimo un bambino, il codice precedente funziona per il caso più generale, quando un genitore può avere molti figli . Inoltre, sto omettendo i metodi get/set per motivi di semplicità.

+0

Questo sembra abbastanza buono, tranne che dovrebbe essere un 'Set <>', non un 'Elenco <>'. –

+2

Entrambe le raccolte vanno bene, una lista può essere utile per mantenere l'ordine di inserzione, un insieme per imporre l'unicità - in realtà dipende dal caso particolare, poiché entrambi sono validi e le specifiche non ne impongono l'uso l'uno sull'altro. Di fatto, molti generatori di codice per la mappatura JPA utilizzano in modo predefinito ArrayList per la relazione @OneToMany. –

+0

ciao, quando faccio il fuoco elencare tutte le query. Va in loop infinito. Puoi guidarmi? –