como una continuación de hibernate optional joinhibernación opcional se unen - necesidad de volver unirse valor de columna de cualquier manera
Muchas consultas existentes en el sistema dependen de la existencia de una relación de mapeado entre EntityOne y EntityTwo y cambiando esto no es una opción attactive Sin embargo, ahora necesito comenzar a almacenar y recuperar valores en tbl_one.two_id
que no existen en la tabla unida. En el camino, esto funciona bien con la siguiente asignación:
@Entity
@Table(name="tbl_one")
public class EntityOne
{
....
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "two_id")
private EntityTwo two;
....
}
.. Sin embargo, cuando la consulta, si el resultado tiene un valor para two_id
que no existe en la tabla combinada, el valor para el campo es two
nulo y no tengo forma de decir cuál es realmente el valor de tbl_one.two_id
. Esperaba que hibernate creara un objeto ficticio EntityTwo
y rellenase su campo de id. Solo si la relación no existía.
También he intentado mapeo two_id
a otro campo sin una combinación:
@Entity
@Table(name="tbl_one")
public class EntityOne
{
....
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "two_id", insertable = false, updatable = false)
private EntityTwo two;
@Column(name = "two_id")
private String twoId;
....
}
... pero entonces el campo two
no está poblado, incluso cuando existe el registro correspondiente.
Esencialmente Necesito alguna manera de insertar/actualizar un valor para tbl_one.two_id
y la recuperación de una entidad unido para EntityTwo
si la relación existe, o si la relación no existe sólo el valor de tbl_one.two_id
.
Espero poder resolver esto sin crear dos asignaciones para la misma tabla.
gracias.
EDIT: más información
public class EntityTwo
{
...
@Id
@Column(name = "site_id")
private String id;
...
}
con su JoinFormula por ejemplo, me estoy poniendo 'org.postgresql.util.PSQLException: ERROR: columna this_.two_two_id no existe' cuando se consulta ...? Supongo que el 'valor'" two_id "debería ser algo más, pero no puedo encontrar ejemplos en línea. ¿Puedes ayudarme? – pstanton
realmente no hay documentación para JoinFormula :( – pstanton
La documentación es muy clara. Pruebe con @JoinFormula (value = "two_id", referenciadoColumnName = "two_id") y mire el SQL generado para ver qué poner como valores de atributo. Además, consulte http://opensource.atlassian.com/projects/hibernate/browse/HHH-5041 y http://opensource.atlassian.com/projects/hibernate/browse/HHH-5171 para obtener índices sobre cómo podría funcionar –