java - 未找到命名查询

标签 java mysql jpa netbeans eclipselink

我正在尝试通过 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/

相关文章:

java - 为什么 Hibernate 发布了 JPA2 API 的新版本?

java - 分支处的堆栈图帧不一致 - Java8 Maven 单元测试

java - @Before/@BeforeEach继承行为改变JUnit4/JUnit5

java - 挥杆 Action 的重做/撤消选项

mysql - mysql中sql命令的写法

hibernate - 如何在 Spring Boot 上使用 Hibernate 生成自动 UUID

java - 如何决定在 JPA 中应使用哪种实体关系

java - 将二维数组分成不相等的矩形和正方形

mysql - 连接多个表,保留 NULL

mysql - 通过查询在两个组之间自然连接