2014-02-19 6 views
1

UPDATE : 데이터베이스 관계를 봤는데 모듈 테이블에 유닛 테이블 (nid, unnr)에 대한 참조가 두 개 있지만 모듈 테이블에 대한 참조가 없다는 것을 깨달았습니다. 그것은 nid를 사용하여 테이블을 subrack하기 만합니다. 우선최대 절전 모드 주석으로 @ManyToMany 관계를 매핑하십시오.

+0

데이터베이스에서 생성 쿼리를 직접 실행하고 모든 값이 반환 되었습니까? 이 테이블에 데이터가 있습니까? – Jay

+0

예, 9 행이 있습니다. – Murilo

+0

하지만 매핑이 잘못되었다고 생각합니다. 그래서 그것은 나에게 빈 목록을 돌려 준다. – Murilo

답변

1

는 현재 몇 가지를 혼합되어 표시되어 모든 코드는 ...

당신은 당신이 모듈 3 표, 단위 1, 1을 가지고 있다는 것을 의미 @JoinTable 주석을 정의 하나의 ID가 그것의 두 엔티티에 있습니다 ...

두 번째 주석 모듈과 유닛 간의 One-To-Manny 관계에 대해 이야기했지만, 예제 코드에서는 Many-To- 많은 ...

나는 당신의 설명을 따라하면 코드에서 이렇게 구축 할 것이다 :

@Entity 
@Table(name = "unit") 
public class Unit { 
@Column(name = "nid") 
private int nid; 
@Id 
@GeneratedValue 
@Column(name = "unnr") 
private int unnr; 
@Column(name = "unhwtype") 
private int unhwtype; 
@Column(name = "unslot") 
private int unslot; 
@ManyToOne(cascade = CascadeType.ALL) 
@JoinColumn(name = "nid") 
private Module module; 

@Entity 
@Table(name = "module") 
public class Module { 
@Column(name = "nid") 
private int nid; 
@Id 
@Column(name = "mpos") 
private int mpos; 
@Column(name = "mhwtype") 
private int mhwtype; 
@OneToMany(mappedBy = "module", cascade = {CascadeType.ALL}) 
private Set units; 

문제는 그녀가 nid가 모듈 엔터티의 ID 열이 아니기 때문에 이것이 작동하는지 확신 할 수 없다는 것입니다. nid가 ID가되도록 디자인을 변경해야한다고 생각합니다. 열 ... 당신은이 코드와 함께 시도해 볼 수 있고 작동하도록 할 수 있습니다. 그렇지 않으면 모듈 엔티티의 ID를 ID로 변경하십시오 ..

+0

요 레리, 내가 말한대로 코드를 변경했습니다. 그러나 목록은 여전히 ​​비어 있습니다. 나는 ID로 de nid를 넣으려고 시도 할 것이지만, 이렇게하면 mpos의 id 주석을 유지하거나 제거하고 nid의 id 주석을 넣을 수 있습니까? – Murilo

+0

안녕하세요 Murilo, 나는 Hibernate가 동일한 엔티티에 2 개의 @ 주석 어노테이션을 사용할 수 없다고 가정하므로 이드를 Nid에 놓고 Mpos에서 제거하도록 제안합니다. –

관련 문제