(moxy) objetos de empacotamento jaxb e hibernação de proxy

Nos últimos dias, tentei dar suporte ao empacotamento / desempacotamento XML de um modelo Hibernate, usando o MOXy JAXB. Tentando fazer isso, encontrei um problema com objetos proxy do hibernates. 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;
    }
}

Tentei mapear esse código usando o MOXy JAXB da seguinte maneira:

@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;
    }
}

Meu problema é que o hibernate instancia um objeto proxy do endereço obtido chamando getAddress () em um Usuário. Então, quando o JAXB tenta empacotar o objeto, ele não consegue descobrir que ele é realmente um CoolAddress que está tentando empacotar, o que faz com que as propriedades do CoolAddress não sejam empacotadas.

Pesquisei no Google / considerei as seguintes soluções possíveis:

De alguma forma, receba um retorno de chamada do JAXB, permitindo que eu substitua o objeto que está sendo empacotado por outro. Isso me permitiria obter o objeto real do proxy. Toque em todos os objetos no modelo que farão a hibernação buscar os objetos reais. Não consegui encontrar nenhuma maneira inteligente de fazer isso além de executar manualmente todas as propriedades não transitórias, o que é silencioso e tedios Defina o hibernate para usar a busca ansiosa na sessão em que estou organizando os modelo

Estou procurando sugestões alternativas ou se uma das sugestões acima é possível (e fácil) de implementar. Qualquer ajuda é apreciada:).

questionAnswers(1)

yourAnswerToTheQuestion