gpt4 book ai didi

java - JPA 中的 EntityManager 表不可见

转载 作者:行者123 更新时间:2023-11-30 23:00:31 25 4
gpt4 key购买 nike

我在 mysqladmin 控制台中创建了一个表,用一些日期填充它,现在我想用 JPA (Hibernate) 连接到这个数据库并查询它。所以我创建了实体

@Entity
@Table(name = "Service")
public class Service implements Serializable {

@Id
@GeneratedValue
private Long id;
//blablba
}

我能够将 EntityManager 注入(inject)到 CDI bean,但查询在 org.h2.jdbc.JdbcSQLException 上失败:未找到表“服务”; SQL语句

@Model
public class ServicesBean {

@PersistenceContext(unitName = "persistenceUnit")
private EntityManager manager;

public List getAllServices() {
return (List<Service>) manager.createQuery("SELECT s FROM Service s").getResultList();
}
}

我正在使用 MariaDB 5.5.34,我尝试了 MySQL 和 MariaDB 驱动程序(仍然遇到相同的异常),这是我的 persistence.xml

<persistence-unit name="persistenceUnit" transaction-type="JTA">
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myapp"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="pass"/>
<property name="hbm2ddl.auto" value="create"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>

我还尝试连接 DBInspect工具和表格在那里正确显示,我可以查询它。另请注意,我已将 javax.persistence.jdbc.user 设置为一个不存在的用户,但仍然得到相同的结果,所以问题可能出在连接上——但在那种情况下,我没有得到关于表的异常没有找到。

最佳答案

问题实际上是由 Wildfly 引起的 - 部署的项目使用的是 ExampleDS 数据源,它完全忽略了我的 pesistence.xml。所以我创建了具有正确值的新数据源,在 persistence.xml 中添加了对它的引用,现在它可以工作了。但我仍然想知道如何在不配置专有数据源的情况下连接到数据库。

关于java - JPA 中的 EntityManager 表不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288255/

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