org.hibernate.exception.sqlgrammareexception:无法执行查询?

org.hibernate.exception.sqlgrammareexception:无法执行查询?,sql,hibernate,Sql,Hibernate,尝试使用NamedQuery获取列表时出现此异常: org.hibernate.exception.sqlgrammareexception:无法执行查询 下面我提到了代码: 实体类代码: @Table(name = "tbl_users") @XmlRootElement @NamedQueries({@NamedQuery(name = "TblUsers.findAll", query = "SELECT t FROM TblUsers t")}); org.hibernate.Quer

尝试使用NamedQuery获取列表时出现此异常:

org.hibernate.exception.sqlgrammareexception:无法执行查询

下面我提到了代码:

实体类代码:

@Table(name = "tbl_users")
@XmlRootElement
@NamedQueries({@NamedQuery(name = "TblUsers.findAll", query = "SELECT t FROM TblUsers t")});
org.hibernate.Query query = session.getNamedQuery("TblUsers.findAll");
List list = query.list();
DAO实现代码:

@Table(name = "tbl_users")
@XmlRootElement
@NamedQueries({@NamedQuery(name = "TblUsers.findAll", query = "SELECT t FROM TblUsers t")});
org.hibernate.Query query = session.getNamedQuery("TblUsers.findAll");
List list = query.list();

请提供此异常的解决方案。

获取Hibernate正在生成的SQL查询(使用或最好是Hibernate的),然后自己对数据库执行查询。这很可能有助于引导您朝着正确的方向前进。

曾有一段时间面临同样的问题,并发现问题是由于表名与数据库中的类(或实体)名不同。添加了@Table(name=actual\u Table\u name)注释,它成功了。

这个问题似乎有点老了,但不管怎样,一旦我在下面的行中添加到hibernate配置文件,它对我有效

<property name="show_sql">true</property>
true

试试这个,它可以用。 这对我来说非常有效

<property name="show_sql">true</property>
1) 类级注释

@NamedQuery(name="UserDetails.byId" , query="from UserDetails where userId = ?")
2) 使用NamedQuery获取记录

Query qry2 = sf.getCurrentSession().getNamedQuery("USER_DETAILS.byName")    ;
        qry2.setString(0, "Angad Bansode");
        List<UserDetails> user = qry2.list();
        for (UserDetails userDetails : user) {
            System.out.println("User Details by named native query  name = " + userDetails.getUserName() + ", aadhaar no  = " + userDetails.getAadharNo());
        }
Query qry2=sf.getCurrentSession().getNamedQuery(“USER_DETAILS.byName”);
qry2.设置字符串(0,“Angad Bansode”);
List user=qry2.List();
for(UserDetails UserDetails:user){
System.out.println(“用户详细信息按命名本机查询名称=“+userDetails.getUserName()+”,aadhaar no=“+userDetails.getAadharNo());
}

对我来说,它缺少对自动递增主键序列的访问。添加后,此错误已解决

GRANT USAGE, SELECT ON ALL
    SEQUENCES IN SCHEMA public
    TO "${user-name}";;

你有没有试过“从t到t”?这是正确的HQL语法。@Olaf-“从TblUsers t中选择t”也是正确的HQL。您需要显示整个堆栈跟踪。SQLGrammarException表示数据库不接受SQL(由Hibernate翻译)。确保表存在(在正确的模式中)。我尝试过使用hibernate.show_sql,但我得到的只是
插入到表(列)值(?)
我们如何才能真正看到真正的sql而不仅仅是一堆
标记?