我正在使用spring boot,我有这两个类
@Entity
@Table(name="products")
public class Product implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long idProduit;
//other attributes..
@ManyToOne
@JoinColumn(name="idCategory")
private Category category;
和类别类:
@Entity
public class Category implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long idcategory;
//attributes...
@OneToMany(mappedBy="category")
private Collection<Product> products;
我想编码一种方法来保存产品
public long saveProduct(Product p, Long idCat)
是否有一个JpaRepository中定义的方法可以做到这一点,或者,如果我添加一个服务层并定义我的方法如下,或者在Repository中定义一个自定义方法?
public long saveProduct(Product p, Long idCat){
Category c=getCategory(idCat);
p.setCategory(c);
em.persist(p);
return p.getIdProduct();
}
答案 0 :(得分:1)
我认为您应该添加服务层并定义transactional
方法以处理CategoryNotFoundException
之类的异常(当Category c=getCategory(idCat)
触发一个时),
DataIntegrityViolationException
...
构建没有service
图层的解决方案不是一个好习惯,因为您必须手动处理transactions
和propagations
,否则您将面临dirty reads
的风险。