내가 1에서 두 개의 테이블이 관계 : 관계 없음 :최대 절전 모드 :
musician
{
id;
...
musician_status_id;
...
}
musician_status{
id;
name;
...
}
그들은 최대 절전 모드에 매핑됩니다 :는 "m N"에서 "하나 많은"지도
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "musician_status_id", nullable = false)
public MusicianStatus getMusicianStatus() {
return this.musicianStatus;
}
이제 내 DB 모델이 다음 중 하나로 변경됩니다.
musician
{
id;
...
...
}
musician_has_status{
musician_id;
status_id;
organisation_id;
...
}
musician_status{
id;
name;
...
}
이전 매핑에서 중계하는 많은 쿼리와 코드가 있습니다. 따라서 나는 Hibernate getter가 organisation_id에 따라 하나의 musician_status만을 반환하기를 원한다. 내 organisation_id는 정적 변수 (로그인 데이터)에 저장됩니다.
특정 organisation_id에 대한 musician_status 만 검색하는보기와 인터셉터를 생각했습니다. 나는 이것을 최대 절전 모드에서 어떻게 달성해야할지 모르겠다. ...
감사의 말.
추가 : 새로운 DB 매핑은 다음과 같이 보일 것이다 :
@OneToMany(fetch = FetchType.LAZY, mappedBy = "musician")
public Set<MusikerHasMusikerStat> getMusicianHasMusicianStatus() {
return this.musikerHasMusicianStatus;
}
내가 그런 일에 그 변경하려면 :
@OneToMany(fetch = FetchType.LAZY, mappedBy = "musician")
@Add a Filter or something like that?: where musician_has_status.organisation_id=LoginDat.getOrganisationID()
public MusicianStatus getMusicianStatus() {
//or select the right status here?
return this.musicianStatus;
}
빠른 대답 주셔서 감사합니다 : 나는 그것에 생각했지만 나는 Musician.musicianStatus = ...을 사용할 수 없다고 생각합니다. Hibernate 쿼리에서, 또는? – Hollerweger
아니요, 할 수 없습니다. 데이터베이스 스키마와 엔터티가 연결된 방식을 변경했습니다. 코드를 리팩토링해야합니다. 필터를 사용할 수도 있지만 나중에 추가 조직 열을 사용해야 할 때 후회할 수 있다는 느낌이 들게됩니다. http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#objectstate-filters –
감사합니다. 필자가 찾고있는 필터가 될 수 있다고 생각합니다. 더 나은 이해를 위해 몇 가지 코드를 추가했습니다. – Hollerweger