【问题标题】:Using rand function in java entity manager to create query在 java 实体管理器中使用 rand 函数创建查询
【发布时间】:2013-11-07 10:03:57
【问题描述】:

我有这段代码,但是当我运行它时出现错误,我也使用本机查询来执行此操作,但我徒劳

EntityManager entityManager =  Persistence.createEntityManagerFactory("AdvancedJavaProjectPU").createEntityManager();
entityManager.getTransaction().begin();

    Query query = entityManager.createQuery("Select e FROM Question e ORDER BY RAND()").setMaxResults(20);
List<Question> question =query.getResultList();
for(Question q:question){
   System.out.println(q.getName()); 
} 

我得到这个错误:-

异常说明:语法错误解析查询 [Select e FROM Question e ORDER BY RAND()],第 1 行,第 38 列:意外标记 [(]。

【问题讨论】:

  • SELECT id FROM table ORDER BY RAND() LIMIT 1
  • 我已经尝试过了,但这不是问题的限制,问题是 rand() 函数。我想在查询中执行它
  • 我猜你的问题是你在原生查询中使用了一个对象......它是如何将类 Question 映射到你的数据库中的?

标签: java entitymanager


【解决方案1】:

如果您使用本机查询,则应在 SQL 编辑器上运行查询时编写查询...

对了,你为什么不继续使用几分钟前打开的stackoverflow topic????

【讨论】:

  • 是的,但是我希望它能够使用 getResultlist() 并且当我使用它时我可能会出现另一个错误,主键不能为空,我已经在数据库中检查了没有空主键关键,我还阅读了有关此错误的其他一些 cmets,但它并没有解决我的问题。顺便说一句,感谢您的帮助。
  • 如果你想使用原生查询然后将结果作为一个对象,你需要定义一个SqlResultSetMapping以便将sql结果映射到你的对象中。见here
  • 如果这是正确的解决方案,请接受答案。谢谢!
猜你喜欢
  • 2014-09-13
  • 2011-11-23
  • 2019-10-06
  • 2019-11-23
  • 2016-07-02
  • 2015-01-30
  • 1970-01-01
  • 2016-02-25
  • 2023-03-08
相关资源
最近更新 更多