jpa - 使用 Glassfish 5 服务器和 JPA 的 Netbeans 中的类名错误或未设置类路径错误
问题描述
我在 Netbeans 11 中有一个 Web 应用程序(安装了 JDK 8),我添加了 mysql-connector-java-8.0.15.jar 的依赖项,并从我的数据库生成了 JPA。
构建时没有错误。
但是当我尝试运行它时,Glassfish 服务器给了我这些错误(pastebin 链接)。
这是我的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="InvoicesPU" transaction-type="JTA">
<jta-data-source>java:app/Invoices</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
在我的 java 类中,我通过以下方式调用它:
@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {
@PersistenceContext(unitName = "InvoicesPU")
EntityManager em;
...
em.someMethod();
为了完整起见,我在编译阶段没有错误!
有谁知道如何解决它?
解决方案
经过一番研究,我以这种方式解决了它:
从类似问题中获得灵感,我按照devmind的建议在 Glassfish 管理控制台中创建了连接池和资源。
我删除了依赖项
mysql-connector-java-8.x.x.jar
并添加了mysql-connector-java-5.x.x.jar
在
the persistence.xml
我为标签设置 JNDI 名称jta-data-source
一切都按预期进行!
我不知道如何使用最新版本的 MySQL 连接器使一切工作,但至少,我的 Web 应用程序以这种方式工作。
编辑:对于 mysql-connector 的最新版本,正如devmind建议的那样,您应该将 MysqlDataSource: fromcom.mysql.jdbc.jdbc2.optional.MysqlDataSource
设置com.mysql.cj.jdbc.MysqlDataSource
为此处报告的。
我希望它对其他人有用。
推荐阅读
- java - 尝试更新多对多数据结构时获取“同一实体的多个表示”
- python - 将 TFLite 模型拆分为两个子模型
- java - 在 REST API 请求中包含 URL 地址时,RestTemplate 出现问题
- asp.net-mvc - 如何使字段可编辑?
- sql - 在 SQL-Server 中添加 DEFAULT 约束,是否必须提供约束名称?如果否,那么它的陈述是什么
- r - 考虑日期的数据框中的行累积 - R
- sql - 如何根据字符获取子字符串并从右侧开始读取字符串
- python - 为什么 ArgumentParser add_argument 不接受这个论点?
- c++ - 带有类模板的c ++多态性,没有要调用的匹配函数
- zurb-foundation - Zurb Foundaion CLI 在基本主题上无法识别 Zurb Stack