2
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');]]

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

将不胜感激任何帮助!

谢谢

4

3 回答 3

13

我认为你应该使用

.createNativeQuery(...);

代替

.createQuery(...);

但我不确定。

如果您使用注释

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

于 2012-06-20T17:28:14.830 回答
1

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

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

所以你的代码看起来像这样:

User u = new User('Doniyor','ikbola-86@bk.ru','jurabayev','er');
JPA.em("default").persist(u);
于 2012-06-20T17:32:33.257 回答
0

这也行.......

String hql = String.format("insert into attendence(slip_change_cntr,roll_no)values(0,"+a+")");
    Query query = sessionHb.createSQLQuery(hql);
    return query.executeUpdate();
于 2013-09-30T10:49:37.573 回答