【发布时间】:2018-08-30 03:06:44
【问题描述】:
我有以下实体:产品和通道。一个产品可以在一个或多个通道中,一个通道可以有一个或多个产品。 还有一个实体推销员。销售员负责过道中的产品:
@Entity
public class Product{
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "product")
private Set<ProductAisle> productAisle = new HashSet<>;
/* getters, setters, equals and hashcode */
}
@Entity
public class Aisle{
@Id
private Long id;
private String row;
private String shelf;
@OneToMany(mappedBy = "aisle")
private Set<ProductAisle> productAisle = new HashSet<>();
/* getters, setters, equals and hashcode */
}
@Entity
public class ProductAisle{
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private Product product;
@ManyToOne(fetch = FetchType.LAZY)
private Aisle aisle;
/* getters, setters, equals and hashcode */
}
@Entity
public class Salesman{
@Id
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private Set<ProductAisle> productAisle;
}
为简单起见,我通过扩展 JpaRepositoryClass 为每个实体创建了一个存储库:
public interface SalesmanRepo extends JpaRepository<Salesman, Long>{}
public interface ProductAisleRepo extends JpaRepository<ProductAisle, Long>{}
public interface AisleRepo extends JpaRepository<Aisle, Long>{}
public interface ProductRepo extends JpaRepository<Product, Long>{}
问题是我觉得这不是要走的路。
例如,当我尝试添加Salesman 时,我需要检查Product 是否存在。如果没有,我会通过它的存储库持久保存它。
然后我必须检查Aisle 是否存在。如果不是,我通过它的存储库坚持它。
接下来,我必须在ProductAisle 存储库中找到一条记录,或者创建一条记录。
最后,我可以保存Salesman。
问题:保存与关联实体连接的实体的方法是什么?我可以在不进行所有检查的情况下保存主要实体 (Salesman) 吗?
问候
【问题讨论】:
标签: spring jpa spring-data-jpa