Я пытался создать простое приложение JPA с использованием MySql и Hibernate, я хочу загрузить 4 записи из таблицы student db таблица
но я получаю эту ошибку:
Exception in thread "main" javax.ejb.EJBTransactionRolledbackException: Named query not found: findAll
Вот мой класс сущности
package entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="student")
@NamedQueries({
@NamedQuery(name = "findAll", query = "select st from student st")
})
public class student{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="name")
private String name;
@Column(name="surname")
private String surname;
@Column(name="sex")
private String sex;
public student(String name, String surname, String sex) {
this.name = name;
this.surname = surname;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "student [id=" + id + ", name=" + name + ", surname=" + surname + ", sex=" + sex + "]";
}
ДАО
package dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import entity.student;
public class StudentDAO {
public List<student> getAllStd(EntityManager em){
TypedQuery<student> q = em.createNamedQuery("findAll", student.class);
return q.getResultList();
}
}
и, наконец, bean-компонент, вызывающий метод DAO
package test;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import dao.StudentDAO;
import entity.student;
@Stateless
public class Test2Bean {
@PersistenceContext()
private EntityManager em;
public void getAllStudents(){
StudentDAO stdDAO = new StudentDAO();
List<student> students = stdDAO.getAllStd(em);
System.out.println(students.size());
}
}
постоянство.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="mysql">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/mysqlds</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.use_sql_comments" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
</persistence>
я понятия не имею, почему метод DAO не может получить доступ к запросу, я сделал несколько тестовых методов в классе сущностей, а метод DAO имеет доступ к Entity Student.
- Я добавил полное сообщение об ошибке http://pastebin.com/agBxHg7K
Спасибо за все ответы
student
. У вас есть один там? - person James R. Perkins   schedule 10.05.2016