JavaEE-Hibernate+;Glassfish服务器:EntityManager没有持久性提供程序

JavaEE-Hibernate+;Glassfish服务器:EntityManager没有持久性提供程序,hibernate,jakarta-ee,glassfish,Hibernate,Jakarta Ee,Glassfish,我已经研究这个问题一个多星期了 我对JaveEE、Hibernate、Glassfish等的世界还很陌生 我正在使用JavaEE/Glassfish和Hibernate为学校创建一个小项目 1) 我们应该使用Hibernate从本地数据库获取航班列表。 2) 我们应该通过使用RESTAPI的get请求获得结果 我的“路由”类: 包裹路线; 进口道具、道具; 导入DAO.DaoVolsManager; 导入controllers.VolsBD; 进口模型卷; 导入javax.ws.rs.*; 导入

我已经研究这个问题一个多星期了

我对JaveEE、Hibernate、Glassfish等的世界还很陌生

我正在使用JavaEE/Glassfish和Hibernate为学校创建一个小项目

1) 我们应该使用Hibernate从本地数据库获取航班列表。
2) 我们应该通过使用RESTAPI的get请求获得结果

我的“路由”类:

包裹路线;
进口道具、道具;
导入DAO.DaoVolsManager;
导入controllers.VolsBD;
进口模型卷;
导入javax.ws.rs.*;
导入javax.ws.rs.core.MediaType;
导入java.util.ArrayList;
导入java.util.List;
@路径(“/vols”)
公共类卷{
DaoVolsManager=新的DaoVolsManager();
@得到
@产生(MediaType.APPLICATION_JSON)
公共列表getVol(){
returnmanager.getAllVols();
}
}
它指的是我的航班实体管理器类
DAOVolsManager

包DAO;
导入com.sun.istack.NotNull;
进口模型卷;
导入javax.persistence.*;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Optional;
公共类卷管理器{
//启动应用程序时创建EntityManagerFactory。
私有静态最终实体管理器工厂实体\u管理器\u工厂=持久性
.createEntityManagerFactory(“VolDB”);
/**
*雷沃伊基地酒店
*@return Liste de vols
*/
公共列表getAllVols(){
List vols=new ArrayList();
EntityManager=ENTITY_manager_FACTORY.createEntityManager();
试一试{
vols=manager.createQuery(“来自Vol”,Vol.class).getResultList();
}捕获(例外情况除外){
例如printStackTrace();
}最后{
manager.close();
}
返回卷;
}
}
Hibernate
persistence.xml
文件:


org.hibernate.jpa.HibernatePersistenceProvider
模型卷
问题来了:当我在
Main
类中获取数据时

import models.Vol;
导入javax.persistence.EntityManager;
导入javax.persistence.EntityManagerFactory;
导入javax.persistence.EntityTransaction;
导入javax.persistence.persistence;
导入java.util.List;
公共班机{
//启动应用程序时创建EntityManagerFactory。
私有静态最终实体管理器工厂实体\u管理器\u工厂=持久性
.createEntityManagerFactory(“VolDB”);
公共静态void main(字符串[]args){
//打印所有学生
List vols=readAll();
if(vols!=null){
用于(第五卷:卷){
System.out.println(v.getNumVol());
}
}
//永远不要忘记关闭实体经理工厂
实体_经理_工厂。关闭();
}
/**
*读所有的学生。
*
*@返回卷的列表
*/
公共静态列表readAll(){
列表卷=null;
//创建一个EntityManager
EntityManager=ENTITY_manager_FACTORY.createEntityManager();
EntityTransaction=null;
试一试{
//获得交易
事务=manager.getTransaction();
//开始交易
transaction.begin();
//得到一份学生名单
vols=manager.createQuery(“从Vol v中选择v”,
getResultList();
//提交事务
commit();
}捕获(例外情况除外){
//如果存在任何异常,请回滚更改
if(事务!=null){
transaction.rollback();
}
//打印异常
例如printStackTrace();
}最后{
//关闭EntityManager
manager.close();
}
返回卷;
}
}
。。。一切正常,数据显示在本地控制台中,但一旦我尝试通过启动Glassfish服务器并在浏览器中键入goodurl来获取数据,我就会收到
错误500:Internal server Error
javax.persistence.PersistenceException:EntityManager没有名为VolDB

我试图将我的
persistence.xml
移动到不同的位置,但没有成功

这是我当前的文件树:

我该怎么做才能避免这个错误,让Hibernate与Glassfish一起工作? 最后,一旦我解决了这个问题,我应该注意什么才能使它在生产服务器上工作


编辑:在Intellij
项目结构>工件
中向Glassfish添加了Hibernate库,最终它成功了

我想您已经检查了这里列出的内容,并且您将Hibernate库添加到Glassfish中了?顺便问一下,您使用的是哪个版本的Glassfish和Hibernate?
以及您将Hibernate库添加到Glassfish?
实际上我不知道我必须这么做,所以我这么做了,最后它成功了。谢谢你的帮助!顺便说一句,我正在使用Hibernate 5.4.5和Glassfish 5Glad,它工作了。有一个“有用的评论”向上投票按钮(顺便说一句)