【发布时间】:2017-12-19 17:38:35
【问题描述】:
我希望能够在持久化 spring 数据之前使用一些更复杂的保存逻辑。
我有这个 JpaRepository :
public interface MyClassRepository extends JpaRepository<MyClass, Long> {
@Query("from com.package.MyClass as myClass where myClass.parent is null");
MyClass getRootMyClass();
...
}
还有这个实体:
@Entity
@Table("MY_CLASS")
public class MyClass {
@ManyToOne
@JoinColumn("parent_id")
MyClass parent;
}
我希望能够检查父属性是否为 null,然后在存储库中设置根 myClass。例如,像这样:
if(myClass.getParent() == null) {
myClass.setParent(getRootMyClass());
}
我无法在实体中使用@PrePersist 挂钩,因为它不知道存储库。我不能在存储库中这样做,因为它是一个接口而不是一个类。放在哪里最好?
【问题讨论】:
-
你的意思是,你想在你的仓库中保存一个对象之前检查
if (parent!=null) -
“设置根 myClass”是什么意思。执行 getRootMyClass() 后,您通过设置 parent 属性来保存返回值?
标签: java spring spring-data spring-data-jpa