감사 용도로 사용자 테이블과 ManyToOne 관계가있는 영구 클래스가 있습니다. 사실, 모든 수업에는 User 클래스까지이 필드가 있습니다. 최대 절전 모드 ManyToOne/N + 1 호
public class MyClass implements Serializable {
@Fetch(value=FetchMode.SELECT)
@ManyToOne(optional=false, fetch=FetchType.LAZY)
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "CREATE_USER_ID")
public User getCreatedBy() {
return createdBy;
}
@Fetch(value=FetchMode.SELECT)
@ManyToOne(optional=false)
@NotFound(action=NotFoundAction.IGNORE)
@JoinColumn(name="USER_ID")
public User getLastUpdatedBy() {
return lastUpdatedBy;
}
}
그냥이 더 나은 만들기 위해, 일부 적갈색이 테이블에 대부분의 감사 필드를 만든 (8)하지만 T_USER의 필드 숯불 VARCHAR2 (8), 의미있는 외래 키는 할 수 없습니다 그 (것)들에 창조 될 것이다.
Anyhoo, MyClass에 대한 쿼리는 쿼리를 시작하여 감사 필드를 채우고 쿼리를 시작하여 사용자의 감사 필드를 채 웁니다.
감사 필드가 거의 필요하지 않으므로 게으르 게 만들고 싶습니다. 불행히도, 나는 내가 여기에 반대하여 일하고 있다고 생각한다. 적어도 저조한 스키마가 그 중 하나이다.
누구든지 나를 도와 줄 수 있습니까?
제이슨
행운을 가지고 시도해보십시오. 나는 Foreign Keys의 부족이 ManyToOne 관계를 게을리하는 능력을 해치려한다는 가정을하고있었습니다. – Jason
좋아, 나는 내 대답을 다른 제안으로 업데이트했다. –
당신의 대답을 받아 들였습니다. 추가 연구에서 NotFound가 추가 쿼리를 시작한 것처럼 보입니다. ManyToOne이 null 일 수있는 두 가지 장점을 모두 갖고 싶지만 NotFound가 추가 쿼리를 시작하지는 않습니다. – Jason