2017-02-22 2 views
0

Ich benutze Wildfly 10 zusammen mit Deltaspike und habe Probleme, eine Entität zu erhalten. Das Problem tritt später auf, wenn ich versuche, es zu aktualisieren oder eine andere Entität beizubehalten, die darauf verweist. Wenn ich versuche, es zu aktualisieren, erhalte ich die Ausnahme, die angibt, dass die Entität nicht verwaltet wird. Wenn ich versuche, eine andere Entität zu erhalten, die darauf verweist, dann erhalte ich die Ausnahme, die angibt, dass sich die Entität in einem Übergangszustand befindet.Wildfly - deltaspike - Transaktion nicht festgeschrieben?

Ich benutze JTA und die Entität sollte früher als in einem anderen Methodenaufruf gespeichert worden sein.

Ich habe versucht, Container Managed Transactions und Bean Managed Transactions zu verwenden. In diesem Zusammenhang scheint es, dass nur die Datei apache-deltaspike.properties Auswirkungen auf die Änderung hat. Ich habe auch den Transaktionsinterceptor manuell aktiviert, aber ich glaube nicht, dass das einen Unterschied macht, weil es mit oder ohne expliziter Aktivierung in bohnen.xml aktiviert wird. Die @Transactional-Annotation scheint die Transaktion nicht wirklich zu bestätigen (ich habe sie mit verschiedenen Argumenten getestet und ich hätte eine andere Ausnahme erwartet, aber gehe einfach dieselbe).

@Transactional(Transactional.TxType.REQUIRES_NEW) 
//@Transactional(Transactional.TxType.NEVER) 
@Loggable 
protected void startSession() { 
    entity = new Entity("something"); 
    LOGGER.warn("entity:" + entity); 
    entityRepository.saveAndFlushAndRefresh(entity); 

    LOGGER.warn("end - entity:" + entity.getId()); 
} 

Die Protokollanweisungen zeigen die ID ist 0, nicht festgelegt. Nun, wenn ich die Sequenz abfragen, sehe ich es bei 189 aus ist, so viele Male getroffen ...

Die eigentliche Ausnahme ist, wenn ich versuche zu tun:

entityRepository.refresh(entity); 

Das heißt, wenn ich das bekommen Ausnahme, die angibt, dass die Entität nicht verwaltet wird. Wie ich angedeutet habe, kann ich sehen, dass der Transaktions-Interceptor gemäß den Protokollen aktiviert ist.

Irgendwelche Ideen?

Antwort

0

Das Problem scheint in neueren Versionen von Ruhezustand zu sein, Sie können einen primitiven Typ für die ID/Version Felder nicht verwenden.

Ich bin jetzt in der Lage, Einheiten zu speichern.

Verwandte Themen