Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java hibernate无法解析属性_Java_Hibernate - Fatal编程技术网

java hibernate无法解析属性

java hibernate无法解析属性,java,hibernate,Java,Hibernate,我试图从一个方法中执行一个简单的select count语句,该方法在我的程序的另一部分上工作,但在这里它给了我错误 public Long validateSub(String source, String tbl){ Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); Query q = session.createQuery

我试图从一个方法中执行一个简单的select 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;

}
错误消息:

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]

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

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

只是为了澄清上述答案,因为我不希望任何人错过它

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

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

private Long studentId;

@Id
@GeneratedValue
@Column(name="studentid")
public Long getStudentId() 
{
    return studentId;
}

您必须查询studentId而不是studentId

请发布一个提取您的类SlaveSubscribers(成员声明和getter/setter for sourcename)和该类的hibernate映射文件(如果存在)。错误一定在那里。注意,这对我帮助很大。我想补充一点,类中定义的变量的大小写并不重要。例如,您还可以将类中的
Long
变量定义为
studentid
,而不是
studentid
,并且只要getter将
I
大写,您仍然需要在查询中将
I
大写。