mapeo de Hibernate @OneToOne con una cláusula @Where
-
10-10-2019 - |
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í?
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.