Plusieurs marqueurs sur cette ligne lors de l'utilisation de @Transactional
par exemple:
@Transactional
public boolean addPersonToDb(Person p) { //message on this line
//some logic
}
Code compile et s'exécute sans problèmes.
Message lui-même: Plusieurs repères à cette ligne
- implémente
com.pname1.pname2.pname3.pname4.PersonDAO.addPersonToDb
- conseillé par
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(org.aopalliance.intercept.MethodInvocation)
Je ne peux pas vraiment comprendre si c'est une erreur ou un message, en regardant d'autres threads les gens à obtenir que comme une erreur. Je suis juste se soucier de savoir si mes transactions travail.
Ok, la classe implémente l'interface et de sa méthode annotée à la transaction , rien de mal à cela?
Mise à jour: résolu quelques erreurs mineures, web app fonctionne mais j'ai toujours ce message(pas de trace de la pile, mais sur la ligne de point d'arrêt):
conseillé par
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(org.aopalliance.intercept.MethodInvocation)
Situation actuelle:
@Transactional
public void registerNewUser(Person p) { //this gives message on line breakpoint - advised by ...; AND this method is implemented by interface
pd.addPersonToDb(p);
}
@Transactional
public void blabla(Person p){ //this does not, as expected; AND it is not in interface
}
Faire mes transactions de travail ou pas? (Je n'ai pas d'exceptions et d'application web s'exécute et les méthodes de travail)
Je ne comprends pas si ce message d'erreur ou pas?
Veuillez voir le jour réponse
OriginalL'auteur Aubergine | 2011-11-22
Vous devez vous connecter pour publier un commentaire.
La question avec plusieurs marqueurs n'est pas un problème; c'est purement informatif. (La méthode est la partie de la mise en œuvre d'une interface ou d'un abrégé de la méthode, vous le saviez sûrement déjà, et il est intercepté par des AOP en raison de la
@Transactional
annotation. J'espère que cela ne vous surprend pas...)L'erreur est parce que la classe que vous l'annotation de ne pas mettre en œuvre une interface adaptée (ou interfaces), qui seraient nécessaires pour utiliser le haut-JDK proxy mécanisme de mettre l'AOP intercepteurs en place dans le bean. (Haricot niveau intercepteurs sont fait par le biais d'un objet proxy qui s'applique le comportement transactionnel et puis les délégués à l'objet réel.) Le JDK proxy mécanisme ne fonctionne qu'avec des interfaces; l'interception autre chose exige une approche différente.
Les deux solutions possibles pour cela sont:
@Transactional
.Vous avez seulement besoin d'utiliser un seul de ces correctifs, et le second est très facile si vous utilisez un système de construction comme Maven; il suffit de mettre à jour les dépendances. (Aussi, évitez de faire des appels interceptés méthodes via
this
, explicite ou non. De ce côté-étapes de l'AOP interception.)Je n'ai aucune idée de ce qui est faux, mais je sais pour sûr que quand je fais ce genre de chose, il fonctionne très bien pour moi. - Je inclure CGLIB dans mes dépendances et de laisser l'œuvre de Printemps tout...
Je dois admettre que votre description est difficile pour moi, donc, ce message peut être ou ne pas être? Maintenant, je n'ai pas exception seulement de ce message sur la ligne de point d'arrêt. Veuillez voir le jour réponse 🙂
il n'est pas nécessaire d'avoir @Transactional à la mise en œuvre des méthodes. ce code fonctionnera comme il est, à condition que tout le reste est correct.
Aucune des deux solutions ne fonctionne pour moi. Toutes les autres idées sur la façon de se débarrasser de cette "Autour des Conseils de Marqueurs" mises en garde?
OriginalL'auteur Donal Fellows
J'ai eu le même rouge marqueurs à côté de signature de la méthode avec
@Transactional
annotation ci-dessus.Le message de ces marqueurs a été comme suit
Ma solution est que j'ai remplacé cette annotation
@org.springframework.transaction.annotation.Transactional
avec l'annotation suivante@javax.transaction.Transactional
.- Je utiliser framework Hibernate pour gérer les transactions dans mon application.
Espère que ça va vous aider aussi.
OriginalL'auteur Igar Kanavalau
Vos transactions de travail, à condition que tout le reste est correct. "Conseillé par" ici est purement informatif et montre que votre méthode est conseillé par le printemps TransactionInterceptor.méthode invoke.
Sur plusieurs marqueur de problème, elle s'affiche lorsque vous mettre en place quelque chose, parce qu'il y a deux informations: la première est "conseillé", et, deuxièmement, que cette méthode est la mise en œuvre de quelque chose.
Si vous n'êtes pas sûr, je vous suggère d'écrire un test d'intégration et de tester les modifications dans la base de données. Mais vous n'avez pas à faire autre chose, votre code fonctionne comme il est. (Si, comme je l'ai dit avant, tout le reste est correct).
OriginalL'auteur ruhsuzbaykus