En los últimos días, he intentado respaldar XML marshalling/unmarshalling de un modelo Hibernate, utilizando MOXy JAXB. Al intentar hacer esto, me encontré con un problema con hibernación de objetos proxy. Considere algo como:(moxy) jaxb marshaling e hibernate proxy objects
public class User {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "address")
public Address getAddress() {
return address;
}
}
public abstract class Address {
// Something
}
public class CoolAddress extends Address {
public String getSomething() {
return something;
}
}
he tratado de asignar este código usando moxy JAXB de la siguiente manera:
@XmlAccessorType(XmlAccessType.NONE)
public class User {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "address")
@XmlElement
public Address getAddress() {
return address;
}
}
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso(CoolAddress.class)
public abstract class Address {
// Something
}
@XmlAccessorType(XmlAccessType.NONE)
public class CoolAddress extends Address {
@XmlElement
public String getSomething() {
return something;
}
}
Mi problema es que hibernación instancia un objeto proxy de la dirección obtenida llamando GetAddress() en un usuario. Entonces, cuando JAXB intenta ordenar el objeto, no puede descubrir que en realidad es un CoolAddress que está tratando de reunir, lo que resulta en que las propiedades en CoolAddress no se calculan.
He buscado en Google/examinó las siguientes soluciones posibles:
- de alguna manera obtener una devolución de llamada desde JAXB, lo que me permite reemplazar el objeto que se calculan las referencias con otro. Esto me permitiría obtener el objeto real del proxy.
- Toque todos los objetos en el modelo que harán que Hibernate recupere los objetos reales. No he podido encontrar ninguna forma inteligente de hacer esto que no sea ejecutar manualmente todas las propiedades no transitorias, lo que es bastante tedioso.
- Establecer la hibernación para utilizar la búsqueda con ganas en la sesión Estoy coordinando los modelos.
Estoy buscando sugerencias alternativas, o si una de las sugerencias anteriores es posible (y fácil) de implementar. Cualquier ayuda es apreciada :).
¿Tiene '' CoolAddress' extienden address'? –
Sí, lo siento. Me olvidé de escribir eso. –