java - hibernate SQL 错误 : 1064, SQLState: 42000

标签 java hibernate

我的 hibernate 查询就是这样。

@Override
    public List<Userdata> getUserDataWithUserType(String userName) {
        List<Userdata> africanContinents = getSession().createSQLQuery(
                "from userdata cont join cont.usertype ctry "
                + "where cont.userName = '" + userName + "")
                .list();
        return africanContinents;
    }

但是当我的方法运行时系统会给出错误消息

SQL Error: 1064, SQLState: 42000
ERROR:   You have an error in your SQL syntax;

我如何解决这个问题。 ***以上代码用于创建两个表的联接操作。 ** myuserdata 类是

@Entity
@Table(name="userdata")
public class Userdata  implements java.io.Serializable {
     private Integer userId;
     private Usertype usertype;
     private String firstName;
     private String lastName;
     private String userName;
     private String passWord;
     private String email;
     private String tleNo;
     private Date birthDay;
     private String department;
     private String image;
     private Boolean checkBy;

    public Userdata() {
    }


    public Userdata(Usertype usertype) {
        this.usertype = usertype;
    }


     //get set method
}

最佳答案

当您使用createSQLQuery()时,您正在底层数据库上执行原始SQL查询。但是,您使用的语法似乎是 HQL,而不是原始 SQL,因此我猜测您打算使用 createQuery() 而不是 createSQLQuery()。试试这个代码:

@Override
public List<Userdata> getUserDataWithUserType(String userName) {
    List<Userdata> africanContinents = getSession().createQuery(
        "from Userdata cont where cont.userName = :userName")
       .setParameter("userName", userName)
       .list();
    return africanContinents;
}

您会注意到,我还使用了 setParameter 来设置 WHERE 子句中的参数。这是针对 SQL 注入(inject)的预防措施,您应该查看相关文档。

关于java - hibernate SQL 错误 : 1064, SQLState: 42000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36441743/

相关文章:

java - 当输入字母+空格+字母时,程序变得很有趣

java - 通讯链路故障:Hibernate & Spring application

Java Hibernate Spring - 具有默认实现的服务接口(interface)

java - 当 Web 应用程序启动时,哪个类将首先加载?

java - 找不到codingbat数组挑战的解决方案

java - 如何打印出类中每个对象的所有数据?

java - Hibernate 工具 - 无法添加配置 - dom4j 连接超时 -

java - 使用上下文 :component-scan to scan all base-package

java - Spring数据JPA : InvalidDataAccessApiUsageException for @Transactional

java.lang.NumberFormatException : For input string: "name"