Pergunta

Recentemente, recebi a última versão do Hibernate e notei que meus usuários agora têm advertências sobre o AbstractStandardbasicType's Nullsafeget (ResultSet, String) e NullSafeset (prepareStatement, T, INT) métodos sendo Reprovado Em favor de seus métodos correspondentes que adotam um argumento de procedimento de sessão. O problema é que, quando você implementa um UserType, o sessionEmplementor não é passado para você a maneira que é que é em BasicType, CompositeUserType, etc.

Eu verifiquei o manual do Hibernate para ver se houve um exemplo atualizado. Seu exemplo de usuário usa get / set em vez de nullsafeget / nullsafeset, mas esses métodos também foram reprovados em favor de versões que tomam um meio de sessionplement. Então, parece que até mesmo o exemplo oficial da UserType do Hibernate está usando métodos depreciados, o que me leva a se perguntar duas coisas:

    .
  1. Existe uma boa maneira de obter o sessionEplementor de dentro do UserType?
  2. Se não for prático obter o meio-implementador da UserType, e eu não quero escrever meu próprio nullsafeget / nullsafeset, devo abandonar o UserType em favor de uma de suas alternativas? Quais são as diferenças práticas entre a UserType e, por exemplo, BasicType?
Foi útil?

Solução

Graças a Ryan Ransford por seu comentário sobre minha pergunta original.Embora não seja realmente uma solução para o problema, o link ele forneceu doA lista de discussão de desenvolvedores Hibernate explica por que nenhuma solução está disponível.

.

Uma alternativa não depreciada não pode ser fornecida em 3.6.x, porque assim iria quebrar implementações do usuário do usuário.

Considerando que estes são apenas advertências de depreciação, não faz sentido investir muito tempo em uma solução alternativa que será obsoleta quando a próxima versão não-manutenção estiver disponível.Infelizmente, a próxima grande versão é 4.0, não 3.7, portanto, a migração pode ser um pouco mais envolvida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top