1

IDが@OneToOneのテーブルが2つあります。したがって、2番目のIDがテーブルの存在しない行を参照している場合、この行をスカイプするようにHibernateに指示できます。代わりにエラーが発生します。

@Entity
@Table(name="user")
public class User implements Serializable {

private Long idUser;
private Area area;

//...other get and setter

@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="idarea")
public Area getArea() {
return area;
}
}

idareaが存在しないユーザーの行がある場合、どうすればユーザーをスキップできますか、またはLEFT JOINを作成できますか?

4

1 に答える 1

4

この状況は、外部キー制約のある明確に定義されたスキーマでは発生しないはずです。ユーザーがnull以外の場合、idareaこのIDはAreaテーブルの既存のIDを参照する必要があります。データを取得し、外部キー制約を追加して、これが発生しないようにします。

非常に正当な理由でそれが不可能な場合は、@NotFound(NotFoundAction.IGNORE)注釈を使用できます。ただし、Hibernateは、ユーザーをロードするたびにIDが実際のIDであるか、存在しないIDであるかを確認する必要があるため、パフォーマンスが低下します。

于 2012-11-06T13:36:54.177 に答える