2011-11-29 4 views
0

나는 세계를 동면하는 초보자 다. 따라서 다음과 같은 조건에서 매핑 파일을 작성하는 데 혼란 스럽다.이 최대 절전 모드 매핑을 수행하는 방법?

은 내가 최대 절전 모드를 사용하여 계속하려면 다음과 같은 클래스가 :

나는 이미 수동으로 데이터베이스에 다음 테이블을 만든
class Project { 
    int projectID; 
    List<String> clients; 
    List<String> employers; 

    List<String> technologies; 
    String description; 
} 

:

+---------------------------+ 
      project 
+---------------------------+ 

project_id (pk) | description 
+---------------------------+ 

+---------------------------+  
      organizations 
+---------------------------+ 
    org_id(pk)  | org_name 
+---------------------------+ 

organization을 연결하고 project 테이블에는 다음 표가 있습니다.

+-------------------------------------------------------------+ 
         project_clients 
+-------------------------------------------------------------+ 
    project_id(fk of projects) | client_id(fk of organizations) 
+-------------------------------------------------------------+ 

+-------------------------------------------------------------+ 
        project_employers 
+-------------------------------------------------------------+ 
    project_id(fk of projects) | employer_id(fk of organizations) 
+-------------------------------------------------------------+ 

나는 나의 project 클래스에이 테이블을 매핑하는 방법에 대한 단서가 없다? 그것이 어떻게 완료되는지 어떤 생각?

목록을 사용하려고했지만 목록 지속성을 사용하여 (project_clients 또는 project_employers)와 같은 링크 테이블을 사용할 수 없으며 클라이언트 목록 및 고용주 목록을위한 별도의 클래스를 만들고 싶지 않습니다. 아니면 유일한 옵션입니까?

도와주세요!


수정 1 답변을 주셔서 감사합니다. 하나 이상의 쿼리가 있습니다. hibernate에게 클라이언트 (예를 들어 'foo company')에 대해 조직 테이블에서 'foo company'를 검색하고 그 이름이 존재하면 해당 ID를 가져 와서 project_clients 테이블에 넣어야합니다. 'foo company'가 'organizations'테이블에 없으면 추가 한 다음 해당 ID를 가져옵니다. 나는 고용주를 위해서도 똑같은 일을하고 싶다. 최대 절전 모드에서이 작업을 수행 할 수 있습니까?

현재이 모든 작업을 수행하기 위해 java로 프로그램을 작성했습니다.


답변

0

당신은 당신이 원하는 것을 달성하기 위해 간단한 방법을 찾고 있다면 : @CollectionsOfElements이되지 않습니다 것을

import javax.persistence.ElementCollection; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 

@Entity 
class Project { 
    @Id 
    @GeneratedValue 
    int projectID; 
    @ElementCollection 
    List<String> clients; 
    @ElementCollection 
    List<String> employers; 
    @ElementCollection 
    List<String> technologies; 
    String description; 
} 

참고하므로보다 효율적으로 사용 @ElementCollection

나를 보자 그것이 당신을 위해 작동하는지 아십시오!

1

나는 다음과 같은 매핑이 문제

@Entity 
    @Table(name="project") 
    class Project { 

    @Id 
    @GeneratedValue 
    int projectID; 
    String description; 
    //for joing the tables (many-to-many) 
    @ManyToMany(cascade=CascadeType.ALL) 
    @JoinTable(name = "project_clients", 
    joinColumns = { 
       @JoinColumn(name="projectId") 
      }, 
    inverseJoinColumns = {@JoinColumn(name="clientId")}) 

    private Set<Organization> clients; 

    public Set<Organization> getClients(){ 
     return clients; 
    } 
    public void setClients(Set<Organization> clients){ 
     this.clients= clients; 
    } 

    //same for employers 

    @ManyToMany(cascade=CascadeType.ALL) 
    @JoinTable(name = "project_employers", 
    joinColumns = { 
       @JoinColumn(name="projectId") 
      }, 
    inverseJoinColumns = {@JoinColumn(name="employerId")}) 

    private Set<Organization> employers; 

    public Set<Organization> getEmployers(){ 
     return employers; 
    } 
    public void setEmployers(Set<Organization> employers){ 
     this.employers= employers; 
    } 

} 
+0

안녕을 해결할 생각, 당신의 대답을 주셔서 감사합니다. 하나의 쿼리가 있습니다. hibernate에게 클라이언트 (예를 들어 'foo company')에 대해 조직 테이블에서 'foo company'를 검색하고 그 이름이 존재하면 해당 ID를 가져 와서 project_clients 테이블에 넣어야합니다. 'foo company'가 'organizations'테이블에 없으면 추가 한 다음 해당 ID를 가져옵니다. 나는 고용주를 위해서도 똑같은 일을하고 싶다. 최대 절전 모드에서이 작업을 수행 할 수 있습니까? – Shekhar