2012-07-16 8 views
2

J'ai un gros problème avec le mappage d'annotations hibernate. Heres mon schéma:annotations hibernate un à plusieurs avec clé étrangère composite

diagram http://s13.postimage.org/vdye6yc8n/image.jpg

En ce qui concerne l'objet de mappage, quelques-uns sont simples ... 1 cause de son N pour:
TASK_DEF -> REPORT_DATA
REPORT_DATA -> REPORT_DATA_COLUMN
REPORT_DATA -> REPORT_DATA_VALUE
droit?

Maintenant, le problème est que je suis en train de cartographier Collection de REPORT_DATA_VALUE à REPORT_DATA_COLUMN. J'ai essayé de cette façon:

@OneToMany(fetch = FetchType.LAZY) 
@ForeignKey(name = "FK_REPORT_DATA_VALUE_REPORT_DA", inverseName = "PK_REPORT_DATA_COLUMN") 
@JoinTable(name = "REPORT_DATA_VALUE", joinColumns = { 
     @JoinColumn(name = "REPORT_DATA_ID"), 
     @JoinColumn(name = "COLUMN_NM") 
}, inverseJoinColumns = { 
     @JoinColumn(name = "REPORT_DATA_ID"), 
     @JoinColumn(name = "COLUMN_NM") 
})  
List<ReportDataValue> reportDataValueList; 

Mais hibernate sélectionne des identifications erronées, donc impossible d'exécuter la requête. Quelqu'un pourrait-il m'aider avec ça?

+0

Inclure le diagramme dans votre question, et coller la trace complète de la pile de l'exception. –

+0

Désolé, diagramme mis à jour! – kamil

Répondre

2

Il y a un problème dans votre code. Essayez ceci:

@OneToMany(fetch = FetchType.LAZY) 
@JoinTable(name = "REPORT_DATA_VALUE", joinColumns = { 
    @JoinColumn(name = "REPORT_DATA_ID"), 
}, inverseJoinColumns = { 
    @JoinColumn(name = "COLUMN_NM") 
})  
List<ReportDataValue> reportDataValueList; 

Soit dit en passant, si je vous, je ne serais pas créer une table pour un à plusieurs. Je ferais ceci:

public class A{ 
    @ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="B_ID") 
    B b; 
} 

public class B{ 
    @OneToMany(mappedBy="b",fetch=FetchType.EAGER) 
    Set<A> as; 
} 
Questions connexes