Immer “java.lang.UnsupportedOperationException:"
Habe ich die kleine JPA-Projekt zu bestehen einem Schüler aufnehmen. Ich benutze Oracle-Datenbank. Ich benutze die OpenJPA als JPa-provider.
Erstellt habe ich die Tabelle student und relevanten Sequenzen korrekt.
Student-Entity-Klasse
@Entity
@Table(name = "Student")
public class Student implements Serializable {
private int id;
private String name;
private static final long serialVersionUID = 1L;
public Student() {
super();
}
@Id
@Column(name = "ID")
@SequenceGenerator(name = "TRAIN_SEQ", sequenceName = "STUDENT_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TRAIN_SEQ")
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "NAME")
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="JPAOracleDemo">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>com.jpa.demo.model.Student</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:oracle:thin:@TEST:50111:TESTPEGAD1" />
<property name="openjpa.ConnectionDriverName" value="oracle.jdbc.driver.OracleDriver" />
<property name="openjpa.ConnectionUserName" value="admin" />
<property name="openjpa.ConnectionPassword" value="admin" />
<property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
<property name="openjpa.jdbc.Schema" value="MYSCHEMA" />
</properties>
</persistence-unit>
</persistence>
Client-Klasse
OpenJPAEntityManager em = JPAUtil.getEntityManager();
OpenJPAEntityTransaction tx = em.getTransaction();
tx.begin();
//Create the instance of Employee Entity class
Student student = new Student();
student.setName("A.Ramesh");
//JPA API to store the Student instance on the database.
em.persist(student);
tx.commit();
em.close();
System.out.println("Done...");
Util-Klasse
private static OpenJPAEntityManagerFactory emf = OpenJPAPersistence
.createEntityManagerFactory("JPAOracleDemo", "META-INF/persistence.xml");
private static OpenJPAEntityManager entManager;
/**
* No need to create any instance for this Util.
*/
private JPAUtil() {
}
/**
* Get {@link EntityManager}.
*
* @return the {@link EntityManager}
*/
public static OpenJPAEntityManager getEntityManager() {
if (entManager == null || !entManager.isOpen()) {
entManager = emf.createEntityManager();
}
return entManager;
}
Die Daten weiterhin in der Tabelle Kursteilnehmer erfolgreich, aber ich habe den Balg Fehler
Exception in thread "Attachment 60230" java.lang.UnsupportedOperationException: cannot get the capability, performing dispose of the retransforming environment
at com.ibm.tools.attach.javaSE.Attachment.loadAgentLibraryImpl(Native Method)
at com.ibm.tools.attach.javaSE.Attachment.loadAgentLibrary(Attachment.java:253)
at com.ibm.tools.attach.javaSE.Attachment.parseLoadAgent(Attachment.java:235)
at com.ibm.tools.attach.javaSE.Attachment.doCommand(Attachment.java:154)
at com.ibm.tools.attach.javaSE.Attachment.run(Attachment.java:116)
Exception in thread "main" java.lang.UnsupportedOperationException: cannot get the capability, performing dispose of the retransforming environment
at sun.instrument.InstrumentationImpl.isRetransformClassesSupported0(Native Method)
at sun.instrument.InstrumentationImpl.isRetransformClassesSupported(InstrumentationImpl.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.apache.openjpa.enhance.ClassRedefiner.canRedefineClasses(ClassRedefiner.java:123)
at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:122)
at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:304)
at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:202)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
at com.ibm.ws.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:45)
at com.ibm.ws.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:30)
at com.jpa.demo.util.JPAUtil.getEntityManager(JPAUtil.java:32)
at com.jpa.demo.client.JPAClient.main(JPAClient.java:13)
1045 JPAOracleDemo INFO [main] openjpa.Enhance - Creating subclass for "[class com.jpa.demo.model.Student]". This means that your application will be less efficient and will consume more memory than it would if you ran the OpenJPA enhancer. Additionally, lazy loading will not be available for one-to-one and many-to-one persistent attributes in types using field access; they will be loaded eagerly instead.
Done...
Java-version
JDK 1.6
Jemand bitte lassen Sie mich wissen, was ist hier das Problem?
Aktualisiert:
Ich verwendet die IBM Rational Software Architect for Websphere Software für diese Entwicklung. dieses problem ist mit dieser IDE. Wenn ich die JPA-Projekt standardmäßig fügt der IBM jre. Ich einfach entfernt die IBM jre und versucht mit der SUN jre dann war es Erfolg. Bitte lassen Sie mich wissen, warum diese Funktion nicht unterstützt mit IBM jre?
- Scheint so, problem ist in <property name="openjpa.RuntimeUnenhancedClasses" value="unterstützt" />. Bitte prüfen Sie in openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/... und in openjpa.apache.org/builds/1.2.1/apache-openjpa-1.2.1/docs/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
<property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
Für den Anfang, loswerden Eigentum.
Dies ist mein enhancer template, das funktioniert für OPENJPA:
`
`
In der JPA-Spezifikation erfordert eine gewisse Art von überwachung der Entity-Objekte, aber die Spezifikation definiert nicht, wie die Umsetzung dieser überwachung. Einige JPA-Provider automatisches generieren von neuen Unterklassen-oder proxy-Objekte vor, dass die user-Entity-Objekte zur Laufzeit, während andere byte-code Weberei-Technologien zur Verbesserung der eigentlichen Entity-Klasse-Objekte. OpenJPA unterstützt beide Mechanismen, aber stark darauf hin, nur mit der byte-code der Weberei-Erweiterung. Die Unterklassen support (zur Verfügung gestellt von OpenJPA) wird nicht empfohlen (und ist standardmäßig deaktiviert in OpenJPA 2.0 und darüber hinaus).(Quelle: http://openjpa.apache.org/entity-enhancement.html)
Die Ursache für dieses Problem ist, dass ich verwendet, die Unterklassen Unterstützung für die Entität, die Verbesserung, aber das ist standardmäßig deaktiviert in OpenJPA2.0 und darüber hinaus.
Fand ich die Lösung für dieses Problem. Wir haben zur Verbesserung der entity-Klasse, die zur Laufzeit durch die Bereitstellung einer javaagent beim Start der JVM, dass OpenJPA ist Los in.
Ich etwas wie den folgenden als JVM-argument
-javaagent:C:/OpenJPA/apache-openjpa-2.0.0/openjpa-2.0.0.jar
Und ich nahm den Balg Zeile aus persistence.xml
Arbeiten persistence.xml