2017-12-19 7 views
0

DB가있는 Spring Boot 프로젝트가 있습니다. 나는 이미 테이블을 얻었고, "People"이라고 부르 자. 두 번째 열, 즉 People_idString이있는 두 번째 테이블 인 "People_Strings"를 추가해야합니다. People의 모든 행에 대해 많은 문자열을 포함해야합니다.엔티티에 문자열 목록을 추가하는 방법 - Spring, Hibernate

어떻게 프로젝트의 People 엔터티에 매핑 할 수 있습니까?

편집 : 나는이 좀 기본적인 질문은 내가 먼저 "시작하기"최대 절전 모드 읽을 제안 String 또는 People_Strings

+2

를 시도? 코드를 보여줄 수 있습니까? – Farlan

+0

별도의 클래스없이이 작업을 수행하려면 목록을 저장할 수 있습니다! 그리고 먼저 질문을하십시오 –

답변

-1

에 대한의 separete 클래스를 작성하지 않고이 작업을 수행해야합니다.

+0

예, 그것이 다른 엔티티에서 개체의 목록을 포함 할 때 기본 질문입니다. 나는 String을위한 별도의 클래스를 만들고 싶지 않다. 그래서 나는 다른 방법이 있는지 묻고 있습니다. – Alex

+0

그런 다음'@ ElementCollection','@ MapKeyColumn'과'@ CollectionTable'을 조합하여 사용하는 것을 고려해야합니다. –

1

사람과 문자열 사이 @OneToMany 관계이다. 다음과 같은 것이 당신을 위해 일할 것입니다.

@Entity 
@Table(name = "People") 
public class People{ 

    @Id 
    @GeneratedValue 
    private Long id; 

    @OneToMany(fetch= FetchType.EAGER, cascade=CascadeType.ALL, mappedBy = "peopleId") 
    private List<PeopleStrings> PeopleStrings; 

@Entity 
@Table(name = "People_Strings") 
public class PeopleStrings{ 

    @Id 
    @GeneratedValue 
    private Long peopleId; 

    @ManyToOne 
    @JoinColumn(name="peopleId") 
    private String string; 
+0

이것이 내가 FiberType.EAGER가 미래에 정말 나쁜 성능을 발휘하도록 바인딩 된 최대 절전 모드를 싫어하는 이유입니다 –

+0

당신 말이 맞아요. 그걸 피하기 위해 여기에있을 수있는 것은 무엇입니까? –

+1

옵션 1 : 최대 절전 모드로 버려라. (최대 절전 모드로 지능적인 사람들이 어리석은 쿼리를 작성하게 만듭니다.) 옵션 2 : 절대로 열망하지 마십시오. 열심히 원하면 쿼리 할 때 명시 적으로 말해야합니다. –

0

만, 당신은 People 엔티티 클래스에 다음 속성을 추가 할 수 필요한 경우 : 당신은 무엇을

@ElementCollection 
public List<String> strings;