gpt4 book ai didi

java - 未找到命名查询

转载 作者:行者123 更新时间:2023-11-30 02:21:54 27 4
gpt4 key购买 nike

我正在尝试通过 JPA 与 mysql db 连接,但它现在让我发疯。我不知道我是怎么做到的,但现在当我重复时,我得到了这个异常:

[EL Warning]: metamodel: 2017-10-06 12:04:17.461--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units.  Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element
Hello world
Exception in thread "main" java.lang.IllegalArgumentException: NamedQuery of name: Vechicle.findAll not found.
at org.eclipse.persistence.internal.jpa.QueryImpl.getDatabaseQueryInternal(QueryImpl.java:351)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1124)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:28)

这是我的文件:

持久性.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="JavaApplication3PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>javaapplication3.Bus</class>
<class>javaapplication3.ProductsList</class>
<class>javaapplication3.Worker</class>
<class>javaapplication3.Division</class>
<class>javaapplication3.VechicleType</class>
<class>javaapplication3.Kontrahent</class>
<class>javaapplication3.Vies</class>
<class>javaapplication3.Templ</class>
<class>javaapplication3.DocumentsList</class>
<class>javaapplication3.Vechicle</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/dem?zeroDateTimeBehavior=convertToNull"/>
<property name="javax.persistence.jdbc.user" value="test"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value="test"/>
</properties>
</persistence-unit>
</persistence>

车辆.class

@Entity
@Table(name = "vechicle")
@NamedQueries({
@NamedQuery(name = "Vechicle.findAll", query = "SELECT v FROM Vechicle v"),
@NamedQuery(name = "Vechicle.findById", query = "SELECT v FROM Vechicle v WHERE v.id = :id"),
@NamedQuery(name = "Vechicle.findByNrReg", query = "SELECT v FROM Vechicle v WHERE v.nrReg = :nrReg"),
@NamedQuery(name = "Vechicle.findBySize", query = "SELECT v FROM Vechicle v WHERE v.size = :size")})
public class Vechicle implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
......
}

Application.class

private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaApplication3PU");
private static EntityManager em = emf.createEntityManager();

public static void main(String[] args) {
System.out.println("Hello world");
em.getTransaction().begin();
List<Vechicle> vech = em.createNamedQuery("Vechicle.findAll").getResultList();
em.getTransaction().commit();
}

抱歉搞得一团糟,但这是我第六次尝试弄清楚它,但我不知道什么是 wrog。具有相同配置的其他应用程序运行得非常好......有人知道我做错了什么吗?

最佳答案

几分钟后,我检查了两个项目的所有属性文件,并且...使用 Java9 启动的项目现在无法与 JPA 一起使用。所以技术更新并不总是好的。

因此,如果有人创建 Java 9 项目并面临该问题,则应该转到 project.properties 并更改 linse:

javac.source=9
javac.target=9

至:

javac.source=1.8
javac.target=1.8

就这样了:)

关于java - 未找到命名查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46603407/

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