Java中的Hibernate选择查询

Java中的Hibernate选择查询,java,sql,spring,string,hibernate,Java,Sql,Spring,String,Hibernate,我正在尝试使用Jackson/Hibernate/SQL/Java来执行select 以下是我正在尝试的: Transaction tx = null; List<Note> list = null; try { tx = dbSession.beginTransaction(); Query query = dbSession.createQuery("select Note from notes where name= :nam

我正在尝试使用Jackson/Hibernate/SQL/Java来执行select

以下是我正在尝试的:

 Transaction tx = null;
    List<Note> list = null;

    try {
        tx = dbSession.beginTransaction();
        Query query = dbSession.createQuery("select Note from notes where name= :nameQ and university= :universityQ " +
                "and professor= :professorQ");
        query.setParameter("nameQ", "ONE");
        query.setParameter("universityQ", "TWO");
        list = query.list();
        tx.commit();
        return new FileInfo(Integer.toString(list.size()), fileName);
    } 

你能帮帮我吗?

我注意到有两件事:

  • 您尚未在
    Note
    类中定义
    Note
    列。但是,你在质疑它

     "select Note from notes
    
  • 我认为,您可能需要将上述查询更改为

       "from notes
    
  • 您没有设置
    :professorQ

    "and professor= :professorQ");
    

  • 看看你的问题。您可以使用3个不同的参数
    nameQ
    universityQ
    professorQ
    ,但是您只设置了其中的2个。尝试添加以下行以设置缺少的参数并避免NullPointerException

    query.setParameter("professorQ", "THREE");
    

    此外,您选择了不正确的注释。正确的HQL查询是:

    from notes where name= :nameQ and university= :universityQ and professor= :professorQ"
    

    这有助于您获得包含所有列的整行。

    您是否故意不设置“professorQ”参数?@khriskooper哇,不知道我怎么会错过这一点。。我会给你回复的一般语法是“从注释n中选择n,其中…”我如何查询注释对象?我知道它不是一列,但我想要对象本身?看看我更新的解决方案
    Note
    class定义所有列,这意味着您需要选择所有列,所以下一步应该是
    List List=query.List()?如果您在前面提到的行中得到null指针,则表示查询为null。否则,请指出获得异常的确切行。是否应该没有“选择”或任何内容?否。SQL和HQL之间存在差异。
    
    from notes where name= :nameQ and university= :universityQ and professor= :professorQ"