2012-04-30 24 views
6

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?

Respuesta

2

@WhereJoinTable no es compatible con @ManyToOne. Hay error HHH-4335 sobre el tema abierto desde hace cinco años. No conozco ninguna solución alternativa, excepto el uso de la vista (en el caso del acceso de solo lectura) como se menciona en el informe de errores.

+0

¿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

+0

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. –

+0

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

1

@JoinColumnOrFormula anotation es una solución adecuada

+0

Esta no es una respuesta a la pregunta, utilice comentarios para discusiones y publicaciones no relacionadas con las respuestas – Moseleyi

Cuestiones relacionadas