2
我实现了在Java中使用新泽西州REST Web服务(JAX-RS)。我使用休眠从MySQL数据库中获取数据。 与此查询:
(Select distinct deliverable.id from Task as t where t.project.id= :id And t.user.username = :name order by t.id desc")
.setMaxResults(3)
.setLong("id", projectId)
.setString("name", username)
.list();
我有一个正确的结果,其为:[275,51,286]。这是每一个ID在数据库中提供的密钥:
id key
---------------------
275 2.0
51 cm
286 19.87
现在我用这个查询(一切都只是deliverable.key代替deliverable.id相同):
(Select distinct deliverable.key from Task as t where t.project.id= :id And t.user.username = :name order by t.id desc")
.setMaxResults(3)
.setLong("id", projectId)
.setString("name", username)
.list();
结果:[“2.0”,“19.88”,“19.99”]。第一个是对的,但第二个和第三个是完全不同的关键。
也许它可以通过“别名”或任何其他方式解决。你的建议?
我想你会发现,如果你拿走.setMaxResults,你得到正确的结果,只是以不同的顺序。 – 2012-07-12 18:00:11
是的你是对的,但我需要完全按照这个顺序。然后获取前三名,这就是为什么我使用.setMaxResults。你有什么想法如何修改查询? – Ali 2012-07-12 19:03:24
但是这是什么顺序呢?你不是很明确。对于这两个查询请尝试像'ORDER BY t.id,deliverrable.id',或者您希望它的任何顺序。 – 2012-07-12 19:14:09