IllegalArgumentException - Hibernate 错误 - org.hibernate.hql.internal.ast.QuerySyntaxException: Clasa 未映射 [SELECT c FROM Clasa c]

IllegalArgumentException - Hibernate Error - org.hibernate.hql.internal.ast.QuerySyntaxException: Clasa is not mapped [SELECT c FROM Clasa c]

我有以下代码行,其中我试图通过使用 JPQL 语法从 class 获取所有用户: `

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import java.util.List;

public class ClasaDao {

    private EntityManager em;

    public ClasaDao(EntityManager em){
        this.em = em;
    }

    public List<Clasa> getClase(){

        String sql = "SELECT c FROM Clasa c";

        TypedQuery<Clasa> query = em.createQuery(sql, Clasa.class);

        return query.getResultList();
    }

    public void stergeClasa(Clasa clasa){

        clasa = em.merge(clasa);
        em.remove(clasa);
    }}`

这是实体 class:

    import javax.persistence.*;
    import java.io.Serializable;
    import java.util.Date;
    import java.util.List;
    
    @Entity
    @Table(name = "Clasa")
    public class Clasa implements Serializable {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
    
        @Temporal(value = TemporalType.DATE)
        private Date dataIncepere;
    
        private String nume;
    
        @ManyToOne
        private Curs curs;
    
        @ManyToMany(mappedBy = "clasa")
        private List<Student> student;
    
        public List<Student> getStudent() {
            return student;
        }
    
        public void setStudent(List<Student> student) {
            this.student = student;
        }
    
        public Clasa getClasa() {
            return clasa;
        }
    
        public void setClasa(Clasa clasa) {
            this.clasa = clasa;
        }
    
        private Clasa clasa;
    
        public Curs getCurs() {
            return curs;
        }
    
        public void setCurs(Curs curs) {
            this.curs = curs;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public Date getDataIncepere() {
            return dataIncepere;
        }
    
        public void setDataIncepere(Date dataIncepere) {
            this.dataIncepere = dataIncepere;
        }
    
        public String getNume() {
            return nume;
        }
    
        public void setNume(String nume) {
            this.nume = nume;
        }
    
        @Override
        public String toString() {
            return "Clasa{" +
                    "dataIncepere=" + dataIncepere +
                    ", nume='" + nume + '\'' +
                    '}';
        }
    }

上面的行产生以下错误:线程“main”中的异常java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:Clasa 未映射[SELECT c FROM Clasa c]

任何关于可能导致此错误的想法将不胜感激

好像是:

@ManyToMany(mappedBy = "clasa")

应该是:

@ManyToMany(mappedBy = "Clasa")

这可能会导致 IllegalArgumentException。

如果它说它没有映射,那么 class 不包含在持久性单元中。检查你 persistence.xml 如果你在那里列出了 class 或者可能添加 <exclude-unlisted-classes>false</exclude-unlisted-classes>