我正在创建User实体的DAO。我正在执行save方法,我希望它返回创建的对象或创建的对象的id。与JPARepository的saveAndFlush类似。下面是UserDAO类的save方法的代码:
public long save(User newUser) {
String query = "insert into user (email,password,name,tenant) values(?,?,?,?) returning id";
TypedQuery<Usuario> q = em.createQuery(query, User.class);
q.setParameter(1, newUser.getCredencials().getEmail())
.setParameter(2, newUser.getCredenciaals().getPassword()).setParameter(3, newUser.getName())
.setParameter(4, newUser.getTenant());
Usuario userSave = q.getSingleResult();
long id = userSave.getId();
return userSave;
}
我的代码没有运行。您在控制台上遇到以下错误:
antlr.NoViableAltException: unexpected token: values
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: values near line 1, column 47 [insert into usuario (email,senha,nome,tenant) values(?,?,?,?) returning id]
请帮我查找代码错误。
答案 0 :(得分:0)
尝试这种方法:
Query query = em.createNativeQuery(sql);
BigInteger id= (BigInteger) query.getSingleResult();
long id = id.longValue();
答案 1 :(得分:0)
我发现问题的解决方案是使用createSQLQuery。这是我使用的代码:
UIImageView
记住我正在使用Mysql。