Pregunta

¿Funcionará -

@OneToOne()
@JoinColumn(name = "id", referencedColumnName = "type_id")
@Where(clause = "type_name = OBJECTIVE")
public NoteEntity getObjectiveNote() {
  return objectiveNote;
}

Esto es lo que estoy tratando de hacer -. Obtener el registro de la tabla cuyo note type_id es el id del objeto actual y type_name es OBJECTIVE

No se puede obtener la asignación anterior para el trabajo. ¿Qué estoy haciendo mal aquí?

¿Fue útil?

Solución

Esto simplemente no funciona, lo siento :( Usted tendrá que hacerlo como uno a muchos y en directo con la obtención de una colección con un solo elemento.

Si realmente quieren que funcione de esta manera, se puede engañar mediante el almacenamiento de hibernación tanto el ID de clave externa y la nombre_tipo en una tabla de unión y diciéndole que ambas columnas componen la clave externa.

Otros consejos

En realidad, usted puede lograr esto mediante la especificación de @OneToOne sin ningún @Where, pero poniendo @Where en la clase de entidad de referencia. I probado esto en Hibernate 4.3.11.

Este funciona si no se preocupan por los objetos de entidad que no coinciden con su @Where.

Si hace se preocupan por otras entidades, es probable que pueda crear una entidad subclase, @Where poner en ella y unirse a esa subclase. Pero no he probado este escenario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top