(moxy) jaxb cálculo de referencias e hibernar objetos proxy

En los últimos días, he intentado admitir la clasificación / desorganización XML de un modelo de Hibernate, utilizando MOXy JAXB. Intentando hacer esto, me he encontrado con un problema con los objetos proxy hiberna. Considere algo como:

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 intentado 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 hibernate crea una instancia de un objeto proxy de la dirección obtenida llamando a getAddress () en un Usuario. Luego, cuando JAXB intenta ordenar el objeto, no puede descubrir que en realidad es un CoolAddress que está tratando de ordenar, lo que hace que esas propiedades en CoolAddress no se pongan en orden.

He buscado en Google / he considerado las siguientes soluciones posibles:

De alguna manera recibo una devolución de llamada de JAXB, lo que me permite reemplazar el objeto que se está organizando con otro. Esto me permitiría obtener el objeto real del proxy.Toque todos los objetos del modelo, lo que hará que hibernar obtenga los objetos reales. No he podido encontrar ninguna forma inteligente de hacerlo que no sea ejecutar manualmente todas las propiedades no transitorias, lo cual es bastante tedioso. Configure hibernar para usar la búsqueda ansiosa en la sesión Estoy ordenando los modelos.

Estoy buscando sugerencias alternativas, o si una de las sugerencias anteriores es posible (y fácil) de implementar. Cualquier ayuda es apreciada:).

Respuestas a la pregunta(1)

Su respuesta a la pregunta