我刚刚开始学习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中,所以我可能需要将每列与对象分开。
答案 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方法来更改默认行为,并默认打印您喜欢的监视器。请考虑默认打印内部内容并为最终用户视图或打印创建自定义方法。