如何解决Spring数据JPA自连接到实体上如何指定递归深度?
使用Spring Boot JPA,我对具有属性id,name和parent_id的“ Person”表进行自我连接。 parent_id是引用Person.id的外键。因此,一个人将有零个或一个父母。下面是我的域类的示例。
@Entity(name="person")
public class Person {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@Column(name="name")
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="parent_person_id")
private Person parent;
// constructors,getters,setters,etc
}
这实际上很好用;例如,当我使用CrudRepository.findById()查询时,我得到一个带有嵌入式Person对象(父对象)的Person对象,该对象可能具有另一个嵌入式Person对象(祖父母),依此类推,直到到达没有父母的Person为止。>
我的问题是,我如何才能只检索一个人及其直系父母而又不重复使用(无祖父母,曾祖父母等)?
我想我可以简单地避免联接,而将parent_id设置为普通的@Column,然后在服务层中执行附加查询以查找父对象,但是我想知道是否存在一些Jpa魔术可以使它变得更容易比那更重要。
解决方法
实际上,这并不像看起来那样困难。将我的Person实体转换为dto,使我有机会简单地在父对象处停止,而不必遍历整个树!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。