【问题标题】:how to print data from object return by the database as object list?如何将数据库返回的对象中的数据打印为对象列表?
【发布时间】:2020-03-02 14:03:54
【问题描述】:

我正在尝试在 spring mvc 中获取数据,我的数据库有 2 行。所以我的数据库将两个对象作为列表返回,但我想从返回的对象中获取特定值

这就是我获取数据和结果的方式

SQLQuery query1 = sessionFactory.getCurrentSession()
            .createSQLQuery("SELECT * FROM cart");

这就是我打印列表的方式

System.out.println(query1.list());

我得到System.out.println(query1.list());的结果

[[Ljava.lang.Object;@16b2af1c, [Ljava.lang.Object;@6e34df0e]

但我想要对象的特定值。 如何从数据库中获取对象返回的值作为列表??

请帮忙.....

【问题讨论】:

  • 你知道hibernate是怎么工作的吗?如果不是,你应该从这里开始:hibernate.org/orm
  • 当你执行查询时,你会得到一个结果集。您需要遍历此结果集以获取单独的条目。
  • 您应该通过 for 循环来迭代结果。

标签: java hibernate spring-mvc object collections


【解决方案1】:
query1.list();

会给你一个Object[]。您可能希望创建一个对象(在您的情况下看起来像“购物车”),以便能够更好地反序列化和操作它。

既然你有一个Cart 对象,你可以这样做:

List<Cart> cartList = Arrays.asList(query1.list());

现在您有了Cart 的列表,并且可以为所欲为。

喜欢打印所有Cart 姓名:

for (Cart cart : cartList)
    System.println(cart.getName());

如果这不起作用,您可以简单地使用Object[]

List<Object[]> cartList = query1.list();
for(Object[] cart : cartList)
    System.out.println(cart[0].toString());

【讨论】:

  • 我得到类似 [Ljava.lang.Object;无法转换为 com.infotech.model.Cart
  • 好的,这是因为它返回的是 Object[],而不是 List。尝试这样做:Arrays.asList(query1.list())
  • 或:列表 cartList = query1.list(); for(Object[] cart : cartList) System.out.println(cart[0].toString());
【解决方案2】:

您需要执行以下操作:

List<Cart> results = query1.list(); // list returns a List<T>

for (Cart cart : results){  // Which you iterate 
      System.out.println(cart.getItems());
      System.out.println(cart.getTotalPrice());
}

【讨论】:

  • 我得到错误 [Ljava.lang.Object;无法转换为 com.infotech.model.Cart
  • @DhruvRajkotiya 你可以试试List&lt;Cart&gt; results = (List&lt;Cart&gt;)(List&lt;?&gt;) query1.list(); 而不是List&lt;Cart&gt; results = query1.list();
【解决方案3】:

List.toString() 依赖于 List 元素的 toString() 方法。
看到结果[Ljava.lang.Object;@16b2af1c,...,元素的类没有覆盖toString()

因此,当您猜测要执行那种调试输出时,您需要在您拥有列表的实体类中覆盖 toString()
请注意,必须小心使用 Hibernate,因为引用其他实体的字段可能会引发它们的初始化,因此可能会执行一些其他不需要的 SQL 请求。

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 2016-04-30
    • 2021-02-06
    • 2014-05-20
    • 2020-09-30
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多