"从"条款和"选择"子句返回不同的JSON格式

时间:2017-04-04 15:35:34

标签: json hibernate

我有一个问题。有什么区别

books = session.createQuery("from Book b").list();

books = session.createQuery("select b.id, b.title, b.author, b.isbn, b.genre, b.price, b.amount from Book b").list();

因为我收到了不同的JSON格式。第一个返回:

  

[{" ID":1," ISBN":" 83-7298-723-8""标题":& #34;上帝之手。生命   迭戈马拉多纳","价格":32.1,"作者":"吉米   烧""量":13,"类型":"运动"},{" ID":2&#34 ; ISBN":" 978-83-11-10881-3""标题":"初学者   体重训练指南","价格":33.4,"作者":"奥利弗   罗伯茨""量&#34:4,"类型":"运动"}]

和第二个:

  

[[1,"上帝之手。迭戈马拉多纳的生活","吉米   Burn"," 83-7298-723-8"," Sport",32.1,13],[2,"体重初学者指南   培训"," Oliver Roberts"," 978-83-11-10881-3"," Sport",33.4,4]]

所以与[和{存在差异,而且顺序不同。

1 个答案:

答案 0 :(得分:0)

两个查询之间的区别在于:

  1. 第一个在设置List<Book>时返回from Book b,因此它将返回整个Book对象。
  2. 虽然第二个在设置List<Object[]>时返回select b.id, b.title, b.author, b.isbn, b.genre, b.price, b.amount from Book b,但对于每个结果,查询将返回一个对象数组,其中每个属性都返回为Object,无论是什么它的类型。在这种情况下,即使您选择了实体中的所有列,也会得到Object[]
  3. 这解释了你得到的两个JSON输出之间的区别。

    <强>参考:

    您可以从 Hibernte documentation 中看到: