論理的に削除されたレコード(つまりactive=false
)は、@ManyToOne
マッピングで問題の原因となっています。複数の結果が結合列によって返されているためです。ManyToOne with where句
active=true
レコードを含める必要があり
によって:しかし
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "site_id", referencedColumnName = "site_id", insertable = false, updatable = false)
@WhereJoinTable(clause = "active=true")
private Site site;
、それは休止状態(?おそらくその唯一の有効なOneToMany
用)以来で使用されていないWhereJoinTable
ように思えますactive=true
は生成されたSQL(ログ)には表示されず、問題は解決しません。
ManyToOne
の参加にwhere句を含めることはできますか?
はつまり私は、読み取り専用 'ActiveSite'実体を持って、再マッピングし、同じテーブルへとマッピングにフィルタをかけることが可能であるのですか? – pstanton
はい、そうすることができます。しかし、予想通り、ActiveSiteとSiteのインスタンス間の接続はHibernateには不明です。したがって、対応するSiteに加えられた変更は、ActiveSiteがデータベースから読み取られる(またはリフレッシュされる)ときのみ、ActiveSiteに反映されます。 –
しかし、この場合は受け入れられますが、自分の '@ Entity'に' @Where(clause = "active = true") 'を使用しようとしており、冬眠は' site0_.active = site0_に変換しています。本当の '..あなたが私がそれを解決するのを手助けすることができれば私はあなたにティックを与えるでしょう(あなたがあなたの答えにいるので..)助けてくれてありがとう! – pstanton