Java org.hibernate.QueryException:无法解析已定义列名的属性

Java org.hibernate.QueryException:无法解析已定义列名的属性,java,mysql,hibernate,spring-mvc,Java,Mysql,Hibernate,Spring Mvc,这是我第一次使用SpringMVC+Hibernate,所以请原谅我问了一个noob问题 数据库表之间的关系如下所示: 我想实现的是搜索属于某个用户的用户任务。因此,在UserRepository的实现中,我写了以下内容: @Repository("userTaskRepo") public class UserTaskRepoImpl extends AbstractDao<Integer, UserTask> implements UserTaskRepository {

这是我第一次使用SpringMVC+Hibernate,所以请原谅我问了一个noob问题

数据库表之间的关系如下所示:

我想实现的是搜索属于某个用户的用户任务。因此,在UserRepository的实现中,我写了以下内容:

@Repository("userTaskRepo")
public class UserTaskRepoImpl extends AbstractDao<Integer, UserTask> implements UserTaskRepository {

    public List<UserTask> getByUserId(int userId, int startTaskId, int size) {
        List<UserTask> userTasks = getSession().createCriteria(UserTask.class)
                .add(Restrictions.eq("user_id", userId))
                .add(Restrictions.ge("task_id", startTaskId))
                .setMaxResults(size)
                .list();
        return userTasks;
    }
}
此外,我还定义了用户和任务类

但是,当我试图在UserTaskRepoImpl中调用函数时发生错误 例外情况

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.QueryException: could not resolve property: user_id of: edu.inlab.models.UserTask
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
有人能找出为什么会这样吗?
提前谢谢

好吧,我自己想出来的。 这是因为我混淆了SQL列名(在
@column
中定义)和HQL列名。 代码

应改为

.add(Restrictions.eq("userId", userId))
.add(Restrictions.ge("userId", startTaskId))

好吧,我自己想出来的。 这是因为我混淆了SQL列名(在
@column
中定义)和HQL列名。 代码

应改为

.add(Restrictions.eq("userId", userId))
.add(Restrictions.ge("userId", startTaskId))
是不是
@Table(name=“usertask”)
?还是应该是
@Table(name=“user\u tasks”)
?您确定表列的名称为user\u id吗?是否为
@table(name=“usertask”)
?还是应该是
@Table(name=“user\u tasks”)
?是否确定表列的名称为user\u id?
.add(Restrictions.eq("userId", userId))
.add(Restrictions.ge("userId", startTaskId))