java hibernate无法解析属性

use*_*609 8 java hibernate

我试图从一个方法做一个简单的选择count语句,该方法适用于我的程序的其他部分,但在这里它给了我错误.

 public Long validateSub(String source, String tbl){
    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();


    Query q = session.createQuery("SELECT count(s) from SlaveSubscribers s where s.SOURCENAME = :sourcename AND s.TBL = :tbl");
    q.setParameter("sourcename", source);
    q.setParameter("tbl", tbl);

    Long result = (Long) q.list().get(0);
    session.getTransaction().commit();

    return result;

}
Run Code Online (Sandbox Code Playgroud)

错误消息:

Exception in thread "Thread-3" org.hibernate.QueryException: could not resolve property: SOURCENAME of: com.datadistributor.main.SlaveSubscribers [SELECT count(s) from com.datadistributor.main.SlaveSubscribers s where s.SOURCENAME = :sourcename AND s.TBL = :tbl]
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这不起作用

Ael*_*exe 12

只是为了澄清上面的答案,因为我讨厌任何人都错过它.

Hibernate在类中使用变量属性来进行查询,而不是数据库中的列名.

因此,如果您有这样的模型类:

private Long studentId;

@Id
@GeneratedValue
@Column(name="studentid")
public Long getStudentId() 
{
    return studentId;
}
Run Code Online (Sandbox Code Playgroud)

你将不得不做一个查询studentIdstudentid.


Mik*_*unu 6

您在SlaveSubscribers实体中没有持久属性(字段)SOURCENAME.SOURCENAME最有可能是数据库列的名称.在HQL中,您需要使用字段的名称(区分大小写).