Se uma consulta em cascata ocorrer no hibernato, pode haver problemas de carregamento preguiçosos. Por exemplo, agora tenho uma classe de conta (administrador), categoria (categoria do produto) e classe de produto (produto). Da esquerda para a direita, é um relacionamento individual e da direita para a esquerda, @ManytoOne (Fetch = FetchType.Lazy) está definido. Agora, quero descobrir as informações do produto e empacotá -las no formato JSON para passar para a recepção. Eu uso a declaração de consulta em segundo plano como:
Do produto P, juntam -se Fetch P.Category WHERE P.Nome como: Nome
Dessa forma, você pode descobrir o produto e, em seguida, a categoria no produto também é colocada. No entanto, a conta na categoria não é um objeto real, mas um objeto temporário de procuração. Isso é fácil de entender, porque eu verifiquei o produto e apenas a categoria em cascata. Quanto à categoria e conta, ela é configurada de acordo com o real (preguiçoso).
Agora coloque o produto de consulta no mapa e o converta no formato JSON e retorne à recepção, definitivamente haverá um problema de carregamento preguiçoso, porque o objeto da conta será levado durante o processo de conversão do JSON, mas a sessão foi fechada nesse momento, para que um erro será relatado. Uma solução muito direta, mas não muito boa, é alterar a categoria preguiçosa para ansiosamente, para que as informações da conta possam ser encontradas, mas isso não é bom. Por isso, usamos outro método: defina uma lista negra em struts.xml e use expressões regulares para filtrar a conta na categoria ao converter para o formato JSON, para não verificar o objeto da conta e não haverá um problema de carregamento de preguiça. do seguinte modo:
Neste ponto, não deve haver problema. No entanto, no meu projeto, ainda relato exceções de carregamento preguiçoso, o que significa que ele não funciona depois de configurar dessa maneira. Mas teoricamente, após a configuração, tudo bem, e os dados podem ser empacotados no formato JSON e transmitidos para a recepção normalmente. Esse problema me incomodou por dois dias, então eu simplesmente mudei de preguiça de ansioso e comecei a fazer o projeto.
Hoje entrei em contato com a exceção aqui em outra exceção de hibernato e a resolvi! Hoje em Hibernate, quero chamar o método GET para obter as informações do produto, mas não consigo obtê -lo. Não há mensagem no console de segundo plano. Desde que liguei o modo dev, a recepção exibiu a mensagem de erro:
java.lang.classCastException: cn.it.shop.model.product _ $$ _ javassist_0 não pode ser fundido para javassist.util.proxy.proxy </span>
Não pode ser convertido em um proxy? ? Por que mudar para um agente? Geralmente, os agentes não podem ser convertidos em objetos reais? Por isso, pesquisei na Internet e descobri que esse problema pode ser devido a um pacote Javassist Jar no projeto que conflita. Fui ao projeto para conferir, e acabou sendo verdade:
Realmente entra em conflito ... então eu apenas excluo o pacote javassist-3.11.0.ga.jar no pacote Struts. O Hibernate está correto e você pode obter as informações do produto normalmente. Então me lembrei do problema de trocar de Struts2 para o JSON há 2 dias, então voltei a mudar ansioso para preguiçoso. O problema se foi e eu também poderia converter para o JSON normalmente. Eu estava deprimido. Foi realmente causado pelo conflito entre os pacotes JAR. Porque não houve erro naquele momento, mas não consegui encontrar os dados JSON retornados na recepção. Eu só sabia que os dados JSON não foram devolvidos. Deve ser um problema com a transferência de fundo para o JSON. De acordo com a experiência existente, 90% dela era um carregamento preguiçoso, mas eu não esperava que fosse causado pelo conflito do pacote JAR.
Posteriormente: se o pacote JAR não entrar em conflito, mas não puder converter o JSON, é basicamente um problema causado pelo carregamento preguiçoso. O método de filtrar objetos de carregamento preguiçoso, configurando as listas negras em struts.xml é muito prático. Não há necessidade de modificar a configuração no POJO. Vou transferir quais campos quero transferir para o JSON e, se não quiser, é muito conveniente.
Link original: http://blog.csdn.net/eson_15/article/details/51394302
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.