RCP Pulgin项目中EntityManager的持久性提供者 [英] No Persistence provider for EntityManager in RCP Pulgin Project

查看:228
本文介绍了RCP Pulgin项目中EntityManager的持久性提供者的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在正在处理的RCP Plugin应用程序中,我获得了EntityManager的No Persistence提供程序。我使用hibernate作为ORM和javax.persistence。我正在使用Derby作为我的数据库。所有的hibernate Jar和支持jar我已经分组成一个插件,并添加到我正在开始的当前项目。我在我的智慧结束。任何帮助将不胜感激。我现在看到不同的地方找到答案,但没有发现任何。



我已经将Persistence.xml文件放在类路径/ META-INF / persistence下。 XML。我已经尝试将persistence.xml放在这些位置 - /RCMSecond/src/persistence.xml /RCMSecond/src/META-INF/persistence.xml /RCMSecond/META-INF/persistence.xml 仍然是RCP项目抛出相同的错误堆栈跟踪。



persistence.xml



 <?xml version =1.0encoding =UTF-8?>< persistence version =2.1xmlns =http://xmlns.jcp.org/xml/ns/persistencexmlns :xsi =http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation =http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/ XML / NS /持久/ persistence_2_1.xsd> < persistence-unit name =RCMSecondtransaction-type =RESOURCE_LOCAL> <提供商GT; org.hibernate.jpa.HibernatePersistenceProvider< /提供商GT; <类> entity.ColumnMeta< /类> <类> entity.DataBase_CompositeID< /类> <类> entity.Files< /类> <类> entity.Database< /类> <类> entity.LookUpCols< /类> <类> entity.Project< /类> <类> entity.QueryEntity< /类> <性状> < property name =hibernate.dialectvalue =org.hibernate.dialect.DerbyDialect/> < property name =hibernate.archive.autodetectionvalue =class,hbm/> < property name =javax.persistence.jdbc.drivervalue =org.apache.derby.jdbc.EmbeddedDriver/> < property name =javax.persistence.jdbc.urlvalue =jdbc:derby:simpleDB; create = true/> < property name =javax.persistence.jdbc.uservalue =root/> < property name =javax.persistence.jdbc.passwordvalue =root/> < property name =hibernate.hbm2ddl.autovalue =update/> < property name =eclipselink.ddl-generationvalue =create-tables/> < property name =eclipselink.ddl-generation.output-modevalue =database/> < property name =eclipselink.logging.levelvalue =SEVERE/> < property name =show_sqlvalue =true/> < property name =format_sqlvalue =true>< / property> < /性状> < / persistence-unit>< / persistence>  



strong> GenericDAOImpl.java



  package daoImpl; import java.io.Serializable; import java。 util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import javax.persistence.TypedQuery; import org.hibernate.Criteria; import org.hibernate .Session; import dao.GenericDAO; import exceptions.EntityNotPresent; public class GenericDAOImpl< T,ID扩展Serializable>实现GenericDAO< T,ID> {protected EntityManager entityManager;受保护的EntityTransaction entityTransaction; public GenericDAOImpl(){super(); EntityManagerFactory factory = Persistence.createEntityManagerFactory(RCMSecond); this.entityManager = factory.createEntityManager(); entityTransaction = this.entityManager.getTransaction(); } @覆盖public T save(T t){entityTransaction.begin(); entityManager.persist(T); entityManager.flush(); entityTransaction.commit();返回t } @ SuppressWarnings({unchecked,rawtypes})@覆盖公开列表< T> readAll(String namedQueryName,Class clazz){TypedQuery< T> query = entityManager.createNamedQuery(namedQueryName,clazz); return query.getResultList(); } @ SuppressWarnings(unchecked)@覆盖public T readById(@SuppressWarnings(rawtypes)类clazz,ID id){entityTransaction.begin(); T t =(T)entityManager.find(clazz,id); entityTransaction.commit();返回t } @ Override public T update(@SuppressWarnings(rawtypes)Class clazz,ID id,T updated)throws EntityNotPresent {if(isEntityExists(clazz,id)){entityManager.merge(updated);返回更新; } else {throw new EntityNotPresent(Entity Not Found,So not not updated); }} @覆盖public void delete(@SuppressWarnings(rawtypes)类clazz,ID removeId){if(isEntityExists(clazz,removeId))){T old = readById(clazz,removeId); entityTransaction.begin(); entityManager.remove(旧); entityTransaction.commit(); }} @ SuppressWarnings(unchecked)@ Override public boolean isEntityExists(@SuppressWarnings(rawtypes)Class clazz,ID id){return entityManager.find(clazz,id)!= null; } @ SuppressWarnings(unchecked)@覆盖public T getFirstRecord(Class<?> clazz){entityTransaction.begin(); Session session = entityManager.unwrap(Session.class);条件queryCriteria = session.createCriteria(clazz); queryCriteria.setFirstResult(0); queryCriteria.setMaxResults(1); T t =(T)queryCriteria.list()。get(0); entityTransaction.commit();返回t } @覆盖公开列表< T> getByQuery(String queryExecute,Object [] pars,@SuppressWarnings(rawtypes)Class clazz){entityTransaction.begin(); @ SuppressWarnings(unchecked)TypedQuery< T> query = entityManager.createQuery(queryExecute,clazz); for(int i = 0; i< pars.length; i ++){query.setParameter(arg+ i,pars [i]);列表< T> results = query.getResultList(); entityTransaction.commit();返回结果; 



StackTrace

>

  org.eclipse.e4.core.di.InjectionException:javax.persistence.PersistenceException:No EntityManager的持久性提供者名为RCMSecondat org .eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)在org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:898)在org.eclipse.e4 .core.internal.di.InjectorImpl.inject(InjectorImpl.java:121)在org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:345)在org.eclipse.e4.core.internal .di.InjectorImpl.make(InjectorImpl.java:264)在org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)在org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle (ReflectionCo ntributionFactory.java:104)在org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73) 55)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129)) 971)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:640) 746)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 2.run(PartRenderingEngine。)中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access $ 0(PartRenderingEngine.java:717) java:711)在org.eclipse.e4.ui.internal.wor的org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)在org.eclipse.e4.ui.workbench上的org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1306)中的kbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695)。在org.eclipse.swt.widgets的org.eclipse.e4.ui.services.internal.events.UIEventHandler $ 1.run(UIEventHandler.java:40)中的renderers.swt.LazyStackRenderer $ 1.handleEvent(LazyStackRenderer.java:72)。在org.eclipse.e4.ui.internal.workbench.swt.E4Application $ 1.syncExec(E4Application)上的org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)上的Synchronizer.syncExec(Synchronizer.java:186) .java:211)在org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)中的org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36) )在org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)在org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)在org.eclipse。在org.eclipse.equinox.internal.event.EventAdminImpl上的org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)上的osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)。在org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)上的org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)中的dispatchEvent(EventAdminImpl.java:135)在org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)中的org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:85) org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)在org上的.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) .eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:108)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine中。在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746)上的safeCreateGui(PartRenderingEngine.java:658)。在org.eclipse.core.runtime.SafeRunner.run(SafeRunner。)上的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 2.run(PartRenderingEngine.java:711)访问$ 0(PartRenderingEngine.java:717) java:42)在org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer)的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695)中。 java:71)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine)上的org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:151) java:654)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746)在org.eclipse.core.runtime.SafeRunner.run(SafeRunner)中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 2.run(PartRenderingEngine.java:711)中的.access $ 0(PartRenderingEngine.java:717) .java:42)在org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer)中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695) .java:71)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine)上的org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) .java:654)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access $ 0(org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746)) PartRenderingEngine.java:717)在org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 2.run(PartRenderingEngine.java:711) )在org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:82)中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695) )在org.eclipse.e4.ui.services.internal.events.UIEventHandler $ 1.run(UIEventHandler.java)中的org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer $ 1.handleEvent(LazyStackRenderer.java:72) :40)在org.eclipse.e4.ui上的org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)上的org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:186)。 internal.workbench.swt.E4Application $ org.eclipse.equinox.internal上的org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)中的$ 1.syncExec(E4Application.java:211)在org.eclipse.equinox.internal.event.EventHandlerTracker.dis上的org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)中的.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)在org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)上的org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)中的patchEvent(EventHandlerTracker.java:1)在org.eclipse.equinox.internal上的org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)上的org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)在org.eclipse.e4.ui.internal.workbench上的org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:85)上的.event.EventComponent.sendEvent(EventComponent.java:39)在org.eclipse.e4.ui.model.application.ui.advanced上的org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)上的.UIEventPublisher.notifyChanged(UIEventPublisher.java:59) .impl.PerspectiveStackImpl.setSelectedElement(PerspectiveStackImpl.java:135)在org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveStackImpl.setSelectedElement(Perspect iveStackImpl.java:1)在org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess()上的org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:108) PerspectiveStackRenderer.java:63)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui)上的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:658)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 2中的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access $ 0(PartRenderingEngine.java:717)上的PartRenderingEngine.java:746)。在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java)中的org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)上运行(PartRenderingEngine.java:711) 695)在org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents的org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:71)中(WBWRenderer.java:614)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui上的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:654) (PartRenderingEngine.java:746)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access $ 0(PartRenderingEngine.java:717)$ 2在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java)上的org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)中的.run(PartRenderingEngine.java:711) :695)在org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)上的org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 4.run(PartRenderingEngine.java:1057)在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)在org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)在org .eclipse.e4.ui.i在org.eclipse.core.runtime.internal.adaptor上的org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)中的nternal.workbench.swt.E4Application.start(E4Application.java:159)。在org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter)的org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)上的EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)。在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)中的org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)中的org.eclipse.core.runtime.adaptor.EclipseStarter.run在org.eclipse.equinox上的org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)上的java.lang.reflect.Method.invoke(Unknown Source)的sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 。org.eclipse.equinox.launcher.Main.main上的org.eclipse.equinox.launcher.Main.run(Main.java:1515)中的.launcher.Main.basicRun(Main.java:608)(Main.java:1488 )引起的:javax.persistence.PersistenceException:没有Persistence provider for EntityManager在daoImpl.GenericDAOImpl中的javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)中命名为RCMSecondat javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)。 < init> (GenericDAOImpl.java:30)在daoImpl.DatabaseDAOImpl。 < init> (DatabaseDAOImpl.java:14)at com.view.FirstView.createControls(FirstView.java:31)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect 。org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)中的java.lang.reflect.Method.invoke(Unknown Source)中的.DelegatingMethodAttributeImpl.invoke(Unknown Source)... 112更多我已经尝试将persistence.xml放在这些位置 -   



/RCMSecond/src/persistence.xml /RCMSecond/src/META-INF/persistence.xml 仍然是RCP项目抛出相同的错误堆栈跟踪。
任何帮助将不胜感激。感谢提前

解决方案

https://docs.oracle.com/javaee/7/tutorial/persistence-intro003.htm


其META-INF目录包含
persistence.xml的JAR文件或目录称为持久性单元的根。持久性单元的范围
由持久性单位的根决定。



持久单位可以打包为WAR或EJB JAR文件的一部分或
可以打包成JAR文件,然后可以将其包含在WAR或
EAR文件中。 •如果将持久化单元作为EJB JAR
文件中的一组类打包,那么persistence.xml应该放在EJB JAR的META-INF目录中。

•如果将持久性单元作为WAR文件中的一组类打包,则
persistence.xml应位于WAR文件的
WEB-INF / classes / META中-INF目录。

•如果将包含在WAR或EAR文件中的
的JAR文件中的持久性单元打包,则JAR文件应位于
- WEB- WAR或
的INF / lib目录 - EAR文件的库目录


检查配置。您的Eclipse应该能够映射资源文件并构建所有软件包。检查项目 - >属性 - >构建路径以配置项目依赖。






offtopic提示: em>
您正在尝试通过注入获取EntityManager:

  @PersistenceContext 
protected EntityManager entityManager $然后从EntityManagerFactory实例获取EntityManager:



EntityManagerFactory factory = Persistence.createEntityManagerFactory(RCMSecond);

  
this.entityManager = factory.createEntityManager();


I am getting the No Persistence provider for EntityManager for named X in an RCP Plugin application I am working on. I have used hibernate as ORM and javax.persistence. I am using Derby for my database. All the hibernate Jar and supporting jars i have grouped into a plugin and added to the current project i am woking on. I am at my wits end. Any help would be appreciated. i have as of now looked at different places for answers but not found any.

I have placed the Persistence.xml file in the classpath under/META-INF/persistence.xml. I have tried placing the persistence.xml at these location - /RCMSecond/src/persistence.xml and /RCMSecond/src/META-INF/persistence.xml and /RCMSecond/META-INF/persistence.xml still the RCP project is throwing the same error stacktrace.

persistence.xml

<?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="RCMSecond" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <class>entity.ColumnMeta</class>
    <class>entity.DataBase_CompositeID</class>
    <class>entity.Files</class>
    <class>entity.Database</class>
    <class>entity.LookUpCols</class>
    <class>entity.Project</class>
    <class>entity.QueryEntity</class>
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
      <property name="hibernate.archive.autodetection" value="class, hbm" />
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:simpleDB;create=true" />
      <property name="javax.persistence.jdbc.user" value="root" />
      <property name="javax.persistence.jdbc.password" value="root" />
      <property name="hibernate.hbm2ddl.auto" value="update" />
      <property name="eclipselink.ddl-generation" value="create-tables" />
      <property name="eclipselink.ddl-generation.output-mode" value="database" />
      <property name="eclipselink.logging.level" value="SEVERE" />
      <property name="show_sql" value="true" />
      <property name="format_sql" value="true"></property>
    </properties>
  </persistence-unit>
</persistence>

GenericDAOImpl.java

package daoImpl;

import java.io.Serializable;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

import org.hibernate.Criteria;
import org.hibernate.Session;

import dao.GenericDAO;
import exceptions.EntityNotPresent;

public class GenericDAOImpl < T, ID extends Serializable > implements GenericDAO < T, ID > {

  protected EntityManager entityManager;

  protected EntityTransaction entityTransaction;

  public GenericDAOImpl() {
    super();

    EntityManagerFactory factory = Persistence.createEntityManagerFactory("RCMSecond");
    this.entityManager = factory.createEntityManager();
    entityTransaction = this.entityManager.getTransaction();

  }

  @
  Override
  public T save(T t) {
    entityTransaction.begin();
    entityManager.persist(t);
    entityManager.flush();
    entityTransaction.commit();
    return t;
  }

  @
  SuppressWarnings({
    "unchecked", "rawtypes"
  })@ Override
  public List < T > readAll(String namedQueryName, Class clazz) {
    TypedQuery < T > query = entityManager.createNamedQuery(namedQueryName, clazz);
    return query.getResultList();
  }

  @
  SuppressWarnings("unchecked")@ Override
  public T readById(@SuppressWarnings("rawtypes") Class clazz, ID id) {
    entityTransaction.begin();
    T t = (T) entityManager.find(clazz, id);
    entityTransaction.commit();
    return t;
  }

  @
  Override
  public T update(@SuppressWarnings("rawtypes") Class clazz, ID id, T updated) throws EntityNotPresent {
    if (isEntityExists(clazz, id)) {
      entityManager.merge(updated);
      return updated;
    } else {
      throw new EntityNotPresent("Entity Not found, So Could not be updated");
    }

  }

  @
  Override
  public void delete(@SuppressWarnings("rawtypes") Class clazz, ID removeId) {

    if (isEntityExists(clazz, removeId)) {
      T old = readById(clazz, removeId);
      entityTransaction.begin();
      entityManager.remove(old);
      entityTransaction.commit();
    }
  }

  @
  SuppressWarnings("unchecked")@ Override
  public boolean isEntityExists(@SuppressWarnings("rawtypes") Class clazz, ID id) {
    return entityManager.find(clazz, id) != null;
  }

  @
  SuppressWarnings("unchecked")@ Override
  public T getFirstRecord(Class <? > clazz) {
    entityTransaction.begin();
    Session session = entityManager.unwrap(Session.class);
    Criteria queryCriteria = session.createCriteria(clazz);
    queryCriteria.setFirstResult(0);
    queryCriteria.setMaxResults(1);
    T t = (T) queryCriteria.list().get(0);
    entityTransaction.commit();
    return t;

  }

  @
  Override
  public List < T > getByQuery(String queryExecute, Object[] pars, @SuppressWarnings("rawtypes") Class clazz) {

    entityTransaction.begin();@
    SuppressWarnings("unchecked")
    TypedQuery < T > query = entityManager.createQuery(queryExecute, clazz);
    for (int i = 0; i < pars.length; i++) {
      query.setParameter("arg" + i, pars[i]);
    }
    List < T > results = query.getResultList();
    entityTransaction.commit();
    return results;

  }
}

StackTrace

org.eclipse.e4.core.di.InjectionException: javax.persistence.PersistenceException: No Persistence provider
for EntityManager named RCMSecond
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java: 68)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java: 898)
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java: 121)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java: 345)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java: 264)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java: 162)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java: 104)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java: 73)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java: 55)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java: 129)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java: 971)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 640)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 746)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java: 717)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java: 711)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java: 42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java: 695)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java: 1306)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java: 72)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java: 40)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java: 186)
at org.eclipse.swt.widgets.Display.syncExec(Display.java: 4761)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java: 211)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java: 36)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java: 197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java: 197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java: 1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java: 230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java: 148)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java: 135)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java: 78)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java: 39)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java: 85)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java: 59)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java: 374)
at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java: 171)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java: 108)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 746)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java: 717)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java: 711)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java: 42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java: 695)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java: 71)
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java: 151)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 654)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 746)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java: 717)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java: 711)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java: 42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java: 695)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java: 71)
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java: 49)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 654)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 746)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java: 717)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java: 711)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java: 42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java: 695)
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java: 82)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java: 72)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java: 40)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java: 186)
at org.eclipse.swt.widgets.Display.syncExec(Display.java: 4761)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java: 211)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java: 36)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java: 197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java: 197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java: 1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java: 230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java: 148)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java: 135)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java: 78)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java: 39)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java: 85)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java: 59)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java: 374)
at org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveStackImpl.setSelectedElement(PerspectiveStackImpl.java: 135)
at org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveStackImpl.setSelectedElement(PerspectiveStackImpl.java: 1)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java: 108)
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java: 63)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 746)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java: 717)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java: 711)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java: 42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java: 695)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java: 71)
at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java: 614)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 654)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java: 746)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java: 717)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java: 711)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java: 42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java: 695)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java: 1057)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java: 337)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java: 1018)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java: 156)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java: 159)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java: 196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java: 134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java: 104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java: 608)
at org.eclipse.equinox.launcher.Main.run(Main.java: 1515)
at org.eclipse.equinox.launcher.Main.main(Main.java: 1488)
Caused by: javax.persistence.PersistenceException: No Persistence provider
for EntityManager named RCMSecond
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java: 61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java: 39)
at daoImpl.GenericDAOImpl. < init > (GenericDAOImpl.java: 30)
at daoImpl.DatabaseDAOImpl. < init > (DatabaseDAOImpl.java: 14)
at com.view.FirstView.createControls(FirstView.java: 31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java: 56)
  ...112 more

I have tried placing the persistence.xml at these location - /RCMSecond/src/persistence.xml and /RCMSecond/src/META-INF/persistence.xml still the RCP project is throwing the same error stacktrace. Any help would be appreciated. Thanks in Advance

解决方案

https://docs.oracle.com/javaee/7/tutorial/persistence-intro003.htm

The JAR file or directory whose META-INF directory contains persistence.xml is called the root of the persistence unit. The scope of the persistence unit is determined by the persistence unit's root.

Persistent units can be packaged as part of a WAR or EJB JAR file or can be packaged as a JAR file that can then be included in an WAR or EAR file.

 • If you package the persistent unit as a set of classes in an EJB JAR
   file, persistence.xml should be put in the EJB JAR's META-INF directory.

 • If you package the persistence unit as a set of classes in a WAR file,
     persistence.xml should be located in the WAR file's 
   WEB-INF/classes/META-INF directory.

 • If you package the persistence unit in a JAR file that will be
     included in a WAR or EAR file, the JAR file should be located in either 
         - the WEB-INF/lib directory of a WAR Or 
         - the EAR file's library directory

Check configuration. Your Eclipse should be able to map resource files and build all packages. check Project->Properties->Build Path in order to configure project dependencies.


offtopic tips: You are trying to obtain the EntityManager by injection:

  @PersistenceContext
  protected EntityManager entityManager

Then to obtain the EntityManager from the EntityManagerFactory instance:

   EntityManagerFactory factory = Persistence.createEntityManagerFactory("RCMSecond");
   this.entityManager = factory.createEntityManager();

这篇关于RCP Pulgin项目中EntityManager的持久性提供者的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆