在控制台中显示 JPA resultList
Displaying JPA resultList in console
我刚开始学习 JPA 2,正尝试在控制台中简单显示我的 table 内容。
我的方法是这样的:
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,因此我可能需要将每一列与对象分开。
我认为你的 class 应该实现 Serializable class.
每当您尝试打印对象时,它都会对其调用 toString()
方法。默认实现 returns 对象 class 和 hashcode。因此,如果你想打印 Bronie 对象数据,你必须 @Override
中的 toString()
方法 class.
@Override
public String toString() {
return "Prop1: '" + this.prop1+ "', Prop2: '" + this.prop2+ "'....;
}
我看到你的问题分为三个部分:
在问题的第一部分,您显示了休眠创建的 SQL 查询以查询数据库以恢复行。动态 table 和列名很奇怪,但这是一个实现细节。
在问题的第二部分中,您谈到了需要分隔列。你不必分开任何东西,你的查询是这样的:
- 实体管理器读取数据库行
- 映射和请求的 class 的实例化和对象
- 用行中的数据初始化对象的属性
第三部分,打印对象:
您显示的打印结果是默认的,class名称和虚拟机中的地址。正如其他人所说,您可以覆盖 toString 方法以更改默认行为,并在默认情况下打印任何您喜欢的内容。请考虑默认打印内部内容,并为最终用户查看或打印创建自定义方法。
我刚开始学习 JPA 2,正尝试在控制台中简单显示我的 table 内容。
我的方法是这样的:
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,因此我可能需要将每一列与对象分开。
我认为你的 class 应该实现 Serializable class.
每当您尝试打印对象时,它都会对其调用 toString()
方法。默认实现 returns 对象 class 和 hashcode。因此,如果你想打印 Bronie 对象数据,你必须 @Override
中的 toString()
方法 class.
@Override
public String toString() {
return "Prop1: '" + this.prop1+ "', Prop2: '" + this.prop2+ "'....;
}
我看到你的问题分为三个部分:
在问题的第一部分,您显示了休眠创建的 SQL 查询以查询数据库以恢复行。动态 table 和列名很奇怪,但这是一个实现细节。
在问题的第二部分中,您谈到了需要分隔列。你不必分开任何东西,你的查询是这样的:
- 实体管理器读取数据库行
- 映射和请求的 class 的实例化和对象
- 用行中的数据初始化对象的属性
第三部分,打印对象:
您显示的打印结果是默认的,class名称和虚拟机中的地址。正如其他人所说,您可以覆盖 toString 方法以更改默认行为,并在默认情况下打印任何您喜欢的内容。请考虑默认打印内部内容,并为最终用户查看或打印创建自定义方法。