2016-05-02 4 views
2

Meine Hauptfrage ist: Gibt es eine Alternative zu @Consumed Annotation für eine Methode innerhalb der JPA-Entity-Klasse?Camel JPA @Consumed Alternativen

Ich stelle diese Frage, weil ich mein JPA-Modell (z. B. alle meine Entitäten) wirklich externalisieren möchte, um andere Projekte mit derselben Datenbank teilen zu können. Ich möchte auch nicht, dass einige Camel-Abhängigkeiten in meinem Unterprojekt die @Consumed-Annotation löschen. Ich habe im Grunde eine Route wie folgt aus:

from("jpa://[MyClass]?consumeLockEntity=true&consumer.SkipLockedEntity=true&consumer.query=[...]") 
    .to("seda:queue.test") 

ich verschiedene Lösungen ausprobiert:

  • erweitern das Untermodul frei Entitätsklasse in meinem Kamel-Projekt mit einem @Consumed Verfahren Kamel. Aber JPA erlaubt keine Vererbung ohne ein Diskriminanzfeld ...
  • Fügen Sie eine Bohne/einen Prozessor am Ende meiner Camel-Route hinzu, um den Entitätszustand manuell zu aktualisieren. Aber meine Route endet (wie erwartet) in einem toten Schloss.

Gibt es andere Lösung, die ich vergessen habe? Gibt es (in der Routenkonfiguration) einen Ort, an dem man "route ending method" eingeben kann?

Vielen Dank im Voraus!

Antwort

1

Ihre zweite Lösung sollte funktionieren. Ich denke, Ihre Route endet mit einem Dead-Lock, weil Ihr Bean versucht, Ihre Entität zu aktualisieren, während Sie bereits in einer Transaktion sind. Wenn das der Fall ist, sollte das Entfernen Ihres Updates in Ihrem Bean funktionieren.

Noch ist Ihre erste Lösung wert. Wenn jemand es versucht hat, interessiert mich, ob es funktioniert hat.