Mehrere Marker auf dieser Linie, wenn mit @Transactional
Beispiel:
@Transactional
public boolean addPersonToDb(Person p) { //message on this line
//some logic
}
Code kompiliert und läuft ohne Probleme.
Nachricht selbst: Mehrere Marker auf dieser Linie
- implementiert
com.pname1.pname2.pname3.pname4.PersonDAO.addPersonToDb
- beraten
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(org.aopalliance.intercept.MethodInvocation)
Kann ich nicht wirklich verstehen, wenn es ein Fehler ist oder einfach nur eine Nachricht, auf der Suche nach anderen threads, die die Menschen bekommen, dass da ein Fehler. Ich bin nur die Sorge, ob meine Transaktionen arbeiten.
Ok, die Klasse implementiert das interface und die Methode annotiert werden, als Transaktions -, nichts falsch mit, dass?
Update: behoben einige kleinere Fehler, die web-app funktioniert, aber ich bekomme immer noch die Nachricht(nicht in der stack-trace, aber auf der Linie, Haltepunkt):
beraten
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(org.aopalliance.intercept.MethodInvocation)
Aktuelle situation:
@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
}
Mache meine Transaktionen arbeiten oder nicht? (Ich habe keine Ausnahmen und web-Anwendung ausgeführt wird und die Methoden der Arbeit)
Kann ich nicht verstehen, wenn diese Nachricht Fehler-oder nicht?
Bitte finden Sie in den aktualisierten Antworten
InformationsquelleAutor Aubergine | 2011-11-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem mit mehreren Markern ist das überhaupt kein problem; es ist rein informativ. (Die Methode ist Teil der Umsetzung einer Schnittstelle oder abstrakten Methode, die Sie wahrscheinlich schon wusste, und es ist abgefangen durch AOP weil der
@Transactional
annotation. Ich hoffe, das überrascht Euch jetzt nicht...)Der Fehler ist, dass die Klasse, die Sie kommentieren nicht die Implementierung einer geeigneten Schnittstelle (oder Schnittstellen), die notwendig wäre, um die Nutzung der built-in JDK proxy-Mechanismus eingeführt wird, mit der AOP-interceptors an Ort und Stelle in der Bohne. (Bean-level interceptors sind durch ein proxy-Objekt, gilt das transaktionale Verhalten und dann die Delegierten, die am realen Objekt.) Die JDK-proxy-Mechanismus funktioniert nur mit Schnittstellen; abfangen alles andere erfordert einen anderen Ansatz.
Den zwei Lösungsansätze HIERFÜR sind:
@Transactional
.Müssen Sie nur verwenden Sie eine der diese behebt, und die zweite ist sehr einfach wenn Sie ein build-system wie Maven; nur die Abhängigkeiten aktualisieren. (Vermeiden Sie auch tun-Aufrufe abgefangen Methoden über
this
, ob ausdrücklich oder nicht. Das side-steps die AOP abfangen.)Ich habe keine Ahnung, was falsch ist, aber ich weiß sicher, dass, wenn ich weiß, dass so etwas funktioniert es ganz gut für mich. Ich CGLIB in meinen Abhängigkeiten und lassen Sie den Frühling arbeiten Sie alle aus...
Ich muss zugeben, deine Beschreibung ist schwierig für mich, also diese Meldung kann oder nicht? Jetzt habe ich keine Ausnahme, nur diese Meldung auf der Linie Haltepunkt. Bitte finden Sie in den aktualisierten Antworten 🙂
es gibt keine Notwendigkeit zu haben, @Transactional an die implementierten Methoden. dieser code funktioniert wie er ist, sofern alles andere richtig ist.
Keiner der beiden Lösungen funktioniert bei mir. Andere Ideen, wie man loswerden dieser "Um-Rat-Marker" Warnungen?
InformationsquelleAutor Donal Fellows
Ich hatte das gleiche rote Markierungen neben der Signatur der Methode mit
@Transactional
Anmerkung oben.Die Meldung solcher Marker wurde wie folgt
Mein fix ist, dass ich durch diese Anmerkung
@org.springframework.transaction.annotation.Transactional
mit der folgenden Anmerkung@javax.transaction.Transactional
.Benutze ich Hibernate framework zur Verwaltung von Transaktionen in meine app.
Hoffe, es wird Ihnen auch helfen.
InformationsquelleAutor Igar Kanavalau
Ihre Transaktionen zu arbeiten, sofern alles andere richtig ist. "Beraten" hier ist rein informativ und zeigt, dass Ihre Methode wird empfohlen, von Frühling TransactionInterceptor.invoke-Methode.
Über mehrere marker-problem, es zeigt, wenn Sie etwas umsetzen, denn es gibt zwei Neuigkeiten: Erstens ist der "empfohlen von", und zweitens, dass diese Methode ist die Umsetzung etwas.
Wenn Sie unsicher sind, schlage ich vor, Sie schreiben ein integration-test und testen Sie die änderungen in der Datenbank. Aber Sie müssen nicht, etwas anderes zu tun, dein code funktioniert so wie es ist. (Wenn, wie gesagt, alles andere ist korrekt.)
InformationsquelleAutor ruhsuzbaykus