Tengo algunos registros eliminados lógicamente (es decir, active=false
) que están causando problemas con mi asignación @ManyToOne
ya que la columna de unión devuelve más de un resultado.ManyToOne con where clause
necesito para incluir sólo los registros en los active=true
por lo que pensé que podía lograr por:
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "site_id", referencedColumnName = "site_id", insertable = false, updatable = false)
@WhereJoinTable(clause = "active=true")
private Site site;
Sin embargo, parece que el WhereJoinTable
no está siendo utilizado por hibernación (tal vez su única válida para OneToMany
?) Ya el active=true
no aparece en el SQL generado (registros) y el problema persiste.
¿Es posible incluir una cláusula where para la unión de un ManyToOne
y cómo?
¿Es posible volver a asignar la misma mesa y poner un filtro en la asignación, es decir, así que tengo una lectura solamente 'entidad ActiveSite'? – pstanton
Sí, puedes hacer eso. Pero como Hibernate desconoce la conexión esperada entre las instancias de ActiveSite y Site. Por lo tanto, los cambios realizados en el Sitio correspondiente se duplican en ActiveSite solo cuando se leen (o actualizan) de la base de datos. –
sí que sería aceptable en este caso, sin embargo, estoy tratando de usar el '@Where (cláusula =" activo = verdadero ")' en mi '@ Entidad' e hibernate lo está convirtiendo en' site0_.active = site0_. verdadero ... si me puede ayudar a resolverlo, le daré el tic (dado que tiene razón en su respuesta ...) ¡gracias por la ayuda! – pstanton