8

複数の結果が結合列によって返されるためactive=false、マッピングで問題を引き起こしている論理的に削除されたレコード (つまり) がいくつかあります。@ManyToOne

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;

ただし、生成された SQL (ログ) に が表示されず、問題が解決しないため、 は hibernate によって使用されていないようです (おそらく ?WhereJoinTableに対してのみ有効です)。OneToManyactive=true

ManyToOneaと howの結合に where 句を含めることは可能ですか?

4

3 に答える 3

4

@WhereJoinTable は、@ManyToOne ではサポートされていません。5 年前から開いている件名に関するバグHHH-4335があります。バグ レポートに記載されているように、ビュー (読み取り専用アクセスの場合) を使用する以外の回避策については知りません。

于 2012-04-30T02:46:00.777 に答える
0

私にとってうまくいった解決策は、クラスの先頭に @where アノテーションを追加することです。次の例を参照してください。

@Where(clause = "state_.idCity=0")
@SuppressWarnings("serial")
@Entity
@Table(name="city", schema="catalog")
@SequenceGenerator(name = "default_gen", sequenceName = "IDSERIEINVALIDO", allocationSize = 1)
public class Citye implements Serializable{
        
    @Id 
    private Long id;
}
于 2021-03-03T13:35:54.397 に答える