在控制台中显示JPA resultList

时间:2017-07-05 15:34:56

标签: database hibernate jpa console display

我刚刚开始学习JPA 2,并试图在控制台中简单地显示我的表格内容。

这就是我的方法的样子:

public static List<Bronie> getListaBroni() {

    EntityManager em = DatabaseHandler.getEntityManager();
    String qString = "SELECT b FROM Bronie b";

    TypedQuery<Bronie> q = em.createQuery(qString, Bronie.class);

    result = q.getResultList();

    return result;

}

我试图在控制台中显示它,但我得到的结果是:

Hibernate: select bronie0_.id as id1_1_, bronie0_.ilosc as ilosc2_1_, bronie0_.kaliber as kaliber3_1_, bronie0_.model_broni as model_br4_1_ from bronie bronie0_
[arma.itemdb.Bronie@7662c85f]

到目前为止,数据库中只有一个对象,但我认为没有必要为此问题添加更多对象。

我知道我必须以某种方式将我收到的对象分成代表不同列的部分,但我不知道如何。以及如何避免这种显示

Bronie@7662c85f

以后?

不知道它是否有帮助,但我会尝试将结果列表放在最后的TableView中,所以我可能需要将每列与对象分开。

3 个答案:

答案 0 :(得分:0)

我认为您的班级应该实施 Serializable 类。

答案 1 :(得分:0)

每当您尝试打印对象时,它都会调用toString()方法。默认实现返回对象类和哈希码。因此,如果您要打印Bronie对象数据,您必须@Override在您的班级中使用toString()方法。

@Override
public String toString() { 
    return "Prop1: '" + this.prop1+ "', Prop2: '" + this.prop2+ "'....;
} 

答案 2 :(得分:0)

我在你的问题中看到了三个部分:

在问题的第一部分中,您将显示hibernate创建的SQL查询,以查询数据库以恢复行。动态表和列名称很奇怪,但它是一个实现细节。

在你的问题的第二部分,你谈到了分离列的必要性。您不必分开任何内容,您的查询如下:

  • 实体管理器读取数据库行
  • 映射和请求的类的实例化和对象
  • 使用行
  • 中的数据初始化对象的属性

第三部分,打印对象:

您显示的打印结果是默认值,即具有虚拟机中地址的类名。正如其他人所说,您可以覆盖toString方法来更改默认行为,并默认打印您喜欢的监视器。请考虑默认打印内部内容并为最终用户视图或打印创建自定义方法。