【问题标题】:unexpected token: VALUES near line 1, column 57意外标记:第 1 行第 57 列附近的 VALUES
【发布时间】:2012-06-22 21:33:26
【问题描述】:
JPA.em("default").createQuery("insert into USER (FULLNAME, EMAIL, USERNAME, PASSWORD) " + " VALUES (\'"+fullname+"\',\'"+email+"\',\'"+username+"\',\'"+password+"\');");

这是一个错误的查询吗?我得到这个错误:

[IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: VALUES near line 1, column 57 [insert into USER (FULLNAME, EMAIL, USERNAME, PASSWORD) VALUES ('Doniyor','ikbola-86@bk.ru','jurabayev','er');]]

我不知道为什么会这样,查询字符串实际上是可以的,对吧?

将不胜感激任何帮助!

谢谢

【问题讨论】:

    标签: playframework syntax-error sql-in


    【解决方案1】:

    我认为你应该使用

    .createNativeQuery(...);
    

    而不是

    .createQuery(...);
    

    但我不确定。

    如果您使用注释

    @Query(value = "your_query_here", nativeQuery = true)

    【讨论】:

    • 谢谢你,完成了这项工作,但它没有将任何数据保存到表中:(
    • 您是否调用了查询对象的 .executeUpdate() 方法??
    • 方法 .createNativeQuery(...) 为数据库创建查询,但它不执行它。要执行查询,您必须在查询对象上调用方法 .executeUpdate()。现在是 .createNativeQuery(...).executeUpdate();也许这篇文章可以帮助你:stackoverflow.com/questions/5157051/…
    • 不管你是谁,你救了我!!!太棒了! :D。那行得通。我没有使用 1) executeUpdate() 和 2) setParameter 非常重要。谢谢谢谢谢谢
    • 在 Hibernate 中也有帮助哈哈哈
    【解决方案2】:

    看起来您正在尝试使用 SQL 语句而不是 JPAQL 进行查询,我不相信它有 Insert Into,尽管我自己还是 Play Framework 的新手,所以我可能是搞错了。

    我相信您应该做的是创建您希望插入的用户,然后持久化该对象,因为您使用的是 JPA。

    所以你的代码看起来应该是这样的:

    User u = new User('Doniyor','ikbola-86@bk.ru','jurabayev','er');
    JPA.em("default").persist(u);
    

    【讨论】:

    • 谢谢,不是说,[IllegalArgumentException:未知实体:models.User]。但用户在那里。
    • 您需要使用@Entity 将用户用JPA 作为一个实体进行注释。在 Play 中可以找到一个很好的例子!网站:playframework.org/documentation/2.0.1/JavaEbean 我相信通过谷歌搜索,您将能够找到如何为您的用户类做注释。
    • 是的,但是如果我放置这个实体,就会给我这个错误:PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to configure EntityManagerFactory 这真是要了我的命
    【解决方案3】:

    这也行.......

    String hql = String.format("insert into attendence(slip_change_cntr,roll_no)values(0,"+a+")");
        Query query = sessionHb.createSQLQuery(hql);
        return query.executeUpdate();
    

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 2015-07-12
      • 2016-02-21
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多