ich die Business-Logik, dieWie ich NucleusUserException durch einen gewissen Wert zu erhalten nicht verwaltet von einem Objekt-Manager
1) erfordert tun, eine Aktion wie Graf oder ‚gefunden ID von oben 1 Artikel mit dem Feld größer ist als ein‘ vermeiden kann , dh einige Leseaktionen über Entität A ausführen. Die Anzahl oder Suche umfasst mehr als 25 Elemente, sodass viele Entitätsgruppen betroffen sind. 2) dann eine Aktion auf einem anderen Unternehmen B tun und die geänderte Einheit 3) bestehen jetzt ich das einzig Objekt für Entität A ändern und will es
bestehen bleiben, wenn ich mir nicht Frühling @Transactional auf meiner Methode hab Objekt mit der ID "A @ someHash" wird von einem anderen Objektmanager beim Aufruf von 3) verwaltet. Laut System.out.println (NucleusJPAHelper.getObjectState (busRouteToCheck)); das Objekt in persistenten Zustand
Wenn ich Frühling @Transactional die ganze Methode gestülpt verwenden, ich habe „zu viele Entity Gruppen geöffnet in der Transaktion“
Wie ich Ergebnisse von 1 zwingen kann) nicht verwaltet werden von Object Manager, um schließlich einige Long-Wert und Prozess 3) wie ich mit A das erste Mal in meiner Methode zu behandeln. Schließlich brauche ich Elemente mehrerer Entitätsgruppen gelesen werden und nur zwei innerhalb der Transaktion aktualisiert werden.
Was ich versucht habe, um zu arbeiten: 1) Dividieren verwenden Sie die gesamte Methode in 3 andere, wo 2 ist ohne @Transaction, 1 und 3 haben @Transaction; Hier habe ich noch NucleusUserException; 2) mit der gleichen Bedingung habe ich versucht, 2 verschiedene Transaktionsmanager zu verwenden, die zuerst Aufrufe für schreibgeschützte Aufrufe (Methode 1) und Schreiben mit der zweiten (Methode 3) tätigen.
Gibt es eine explizite Möglichkeit, den Objektmanager zu steuern?
Dependenciies verwendet werden:
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jdo</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jpa</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.1.1</version>
</dependency>
und Enhancer Plugin
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>3.1.3</version>
<configuration>
<!-- Make sure this path contains your persistent classes! -->
<!--<mappingIncludes>**/domain/*.class</mappingIncludes>-->
<!--<persistenceUnitName>transactions-optional</persistenceUnitName>-->
<verbose>true</verbose>
<api>JPA</api>
<!--<mappingIncludes>com/appspot/Player.class</mappingIncludes>-->
<!--<metadataIncludes>com/appspot/Player.class</metadataIncludes>-->
<fork>false</fork>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<!--<dependency>
<groupId>asm</groupId>
<artifactId>asm-commons</artifactId>
<version>3.3.1</version>
</dependency>-->
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jpa</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
</plugin>
JPA hat einen EntityManager nicht ein ObjectManager, und Sie können Objekte mit JPA –
lösen Ich tat es (in der Tat habe ich em.close(), um alle Objekte aus dem Entity Manager lösen mit Objekten aus Anfrage 1), aber es hilft nicht. ObjectManager ist eine interne von frühen Versionen von Data Nucleus. –
Wenn ein Objekt losgelöst wird, befindet es sich nicht in dem von Ihnen angegebenen Zustand –