如何打印JpaRepository自定义查询返回的ResourceHierarchy实体列表的具体属性值
问题根因
Java的System.out.println()打印对象时会自动调用该对象的toString()方法,你的ResourceHierarchy实体类没有重写该方法,默认调用父类Object的toString()实现,输出格式为「类全限定名@哈希码」,也就是你现在看到的地址类输出。
解决方案
方案1:使用Lombok生成(推荐,开发效率高)
如果你的项目已经引入Lombok依赖,直接在ResourceHierarchy实体类上添加@ToString注解即可,框架会自动生成包含所有类属性的toString方法:
import lombok.ToString; import javax.persistence.Entity; import javax.persistence.Id; @Entity @ToString // 新增该注解 public class ResourceHierarchy { @Id private String id; private String name; private String product; // 其他属性、getter、setter }
如果需要排除敏感字段或关联字段,可使用exclude参数:@ToString(exclude = {"内部敏感字段", "双向关联实体字段"})
方案2:手动重写toString方法
不需要引入第三方依赖,直接在ResourceHierarchy实体类中添加自定义的toString实现,可完全自定义输出格式:
@Override public String toString() { return "ResourceHierarchy [ ID = " + id + ", name = " + name + ", product = " + product + "]"; }
注意事项
如果实体存在双向关联属性(比如@OneToMany和@ManyToOne互相绑定),不要把关联实体字段加入toString的输出内容,避免两个类的toString循环调用引发栈内存溢出。
内容的提问来源于stack exchange,提问作者Jeevan Gyawali
相关产品推荐
相关产品推荐

