gpt4 book ai didi

mysql - Wildfly 10 持久化 MySQL 表未找到

转载 作者:行者123 更新时间:2023-11-29 20:54:30 25 4
gpt4 key购买 nike

我有一个访问 MySQL 数据库的 REST 服务。我正在使用 Wildfly 10 和 MySQL 5.7.12。我试图将 EntityManager 作为注入(inject)进行获取,但在为映射表内容的实体执行 find 方法时出现以下错误。

org.h2.jdbc.JdbcSQLException:找不到表“MYTABLE”; SQL语句:

在 RESTService 类中,我有

@PersistenceContext(unitName="myUnit") 
protected EntityManager entityManager;

我的 persistence.xml 文件是:

<?xml version="1.0" encoding="UTF-8"?>

<persistence 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"
version="2.1">

<persistence-unit name="myUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mytable" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="pass" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
</properties>
</persistence-unit>

</persistence>

问题是,如果我不使用注入(inject),而是使用手动方式检索实体管理器,一切都会顺利进行。

EntityManagerFactory emFactory;
emFactory = Persistence.createEntityManagerFactory("myUnit");
EntityManager em = emFactory.createEntityManager();

您能给我一些关于如何使用 PersistenceContext 的提示吗?代码在某种程度上更干净,我更喜欢使用它。

最佳答案

看起来您正在将默认数据源注入(inject)到持久性单元中,所以我想这取决于 EntityManager 的“构建”方式。解决此问题的一种方法是在 WidFly 中创建数据源并在持久性单元中(通过)其 JNDI 名称使用它。请随时报告错误 http://issues.jboss.org/

关于mysql - Wildfly 10 持久化 MySQL 表未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37736089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com