11
votes

Quelle classe dans Hibernate génère les déclarations SQL qui sont consignées?

J'ai des problèmes avec un ObjectNotFoundException où Hibernate semble effectuer une instruction SELECT SELECT où je ne l'attendais pas aussi, en raison du chargement paresseux étant vrai. Je soupçonne quelque chose à voir avec l'AOP, mais je ne peux rien changer puisque j'utilise le cadre de quelqu'un d'autre.

Je pensais à mettre un point d'arrêt à l'endroit où la déclaration de sélection est générée dans mon journal, de cette façon, je peux voir qui le déclenche. Quelle est la classe Hibernate, je devrais définir des points d'arrêt sur?


0 commentaires

3 Réponses :


10
votes

Je pense que l'entrée de journal est générée dans org.hibernate.jdbc.util.sqlstatementlogger


0 commentaires

3
votes

L'enfer est les cadres d'autres personnes. Vous pouvez voir Hibernate Loging STI SQL si vous configurez Log4J pour obtenir la journalisation au niveau de la débogage pour org.hibernate.sql et journalisation de niveau de trace pour org.hibernate.type. Mais la génération SQL de Hibernate est longue d'où elle décide de savoir ce qu'il faut faire, alors je doute que cela aide. Le sessionImpl a une action qui répertorie les actions Hibernate prendra, vous voudrez peut-être regarder ce qui s'y est montré.


1 commentaires

Merci, j'ai regardé l'action Actionqueur et Sqlstatatinglogger, et j'ai maintenant quelque chose à écrire dans mon rapport de bogue à l'autre gars: D



3
votes

jusqu'à la ligne hibernate 3.6.x , la classe FQN était: org.hibernate.jdbc.util.sqlstatementlogger .

commençant par la ligne 4.x , au moins jusqu'à ce que 5.2 La classe est: org.hibernate.frine.jdbc.pi.sqlstatementlogger


0 commentaires