Innen drools Werkbank i Java-Klasse erstellt EntityManager zu bekommen, und ich innen TFL-Dateien verwendet, aber mein Problem ist, dassKein Persistence Provider für EntityManager namens xxx
- , wenn ich neues Projekt in Workbench erstellen erstellen i Projektstruktur wie maven
- die persistence.xml ist innerhalb src/main.resources/METE-Inf/persistence.xml
wenn ich Klasse nennen unten zu bekommen EntityManager wie
package demo.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.hibernate.jpa.HibernateEntityManagerFactory;
import org.hibernate.Session;
/**
* This class was automatically generated by the data modeler tool.
*/
public class Factory implements java.io.Serializable {
static final long serialVersionUID = 1L;
public Factory() {
}
public Session getSessionHibernate(){
HibernateEntityManagerFactory ha = (HibernateEntityManagerFactory) Persistence
.createEntityManagerFactory("flightdataunit");
EntityManager emf = ha.createEntityManager();
Session session = emf.unwrap(Session.class);
session.beginTransaction().begin();
return session;
}
}
Und persistence.xml wie unten
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">
<persistence-unit name="flightdataunit" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:jboss/sqlserver/flightdata</jta-data-source>
<class>demo.test.Aircraftfleetdetail</class>
<class>demo.test.Flightdatacrew</class>
<class>demo.test.Airfield</class>
<class>demo.test.FlightdatacrewPK</class>
<class>demo.test.Flighttype</class>
<class>demo.test.Repository</class>
<class>demo.test.Seatconfig</class>
<class>demo.test.Aircraftidentity</class>
<class>demo.test.Place</class>
<class>demo.test.Flightdata</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.id.new_generator_mappings" value="false"/>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/>
</properties>
</persistence-unit>
</persistence>
und pom.xml wie
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>TEST</artifactId>
<version>1.0</version>
<name>TEST</name>
<dependencies>
<dependency>
<groupId>sqlserver</groupId>
<artifactId>jarfile</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.6</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>5.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>6.3.0.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
als ich versuchte, i für Namen XXX keine Persistenz-Provider
neue bekam Factory-Klasse zu rufen Fabrikklasse
package demo.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.hibernate.jpa.HibernateEntityManagerFactory;
import org.hibernate.Session;
import javax.ejb.Stateless;
import javax.persistence.PersistenceContext;
/**
* This class was automatically generated by the data modeler tool.
*/
@Stateless
public class Factory implements java.io.Serializable {
static final long serialVersionUID = 1L;
@PersistenceContext(unitName ="flightdataunit")
EntityManager entityManager;
public Factory() {
}
public Session getSessionHibernate(){
Session session = entityManager.unwrap(Session.class);
return session;
}
}
Welche Umgebung versuchen Sie es laufen? Sie definieren die Persistenzeinheit mit dem Transaktionstyp gleich JTA. Dies bedeutet, dass der Container für das Erstellen des Entitätsmanagers verantwortlich sein sollte, Sie ihn jedoch manuell selbst erstellen. Bitte lese dies: http://tomee.apache.org/jpa-concepts.html für weitere Informationen – rapasoft
tatsächlich ich benutze Wildfly 8.1.Final Application Server, in diesem Kie-Server und Kie-WB Kriege sind im Einsatz, ich brauche Hibernate-Session-Objekt für den Zugriff auf Daten in Kie-Workbench –