2015-10-08 3 views
1

Я работаю с пружинным ботинке, у меня есть эти два классаSpring Data JPA: сохранить объект с @ManyToOne

@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; 

я хочу закодировать METHODE к сохранить продукт

public long saveProduct(Product p, Long idCat) 

есть метод, определенный в JpaRepository, который может это сделать, или, я должен добавить слой службы и д efine мой метод, как показано ниже, или определить его в методе репозитория?

public long saveProduct(Product p, Long idCat){ 
    Category c=getCategory(idCat); 
    p.setCategory(c); 
    em.persist(p); 
    return p.getIdProduct(); 
    } 

ответ

1

Я думаю, вы должны добавить в сервисный слой и определить метод transactional для того, чтобы обрабатывать исключения, как CategoryNotFoundException (когда Category c=getCategory(idCat) пожары один), DataIntegrityViolationException ....

Построение решения без service Слой не является хорошей практикой, так как вам придется обрабатывать transactions и propagations вручную, и вы рискуете иметь dirty reads.

Смежные вопросы