2014-11-20 111 views
1

我正在使用Restful的服務項目,我試圖堅持一個實體通過服務但我不知道如何編寫引用另一個對象的參數.. 。這裏是我的類的一些代碼。插入彈簧Jpa的服務聲明

域類

@Component 
@Entity 
public class Atleta extends Persona implements java.io.Serializable { 


    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer id; 

    private Skill skill 

    private Result result 


} 

@Entity 
public class Skill implements java.io.Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer id; 

    private string description 

    public Skill() { 
    } 

    public Skill(Atleta atleta, String description) { 
     super(); 
     this.atleta = atleta; 
     this.description = description; 

    } 

    //..Getters and Setters 

DAO接口

public interface DaoAtletaI extends JpaRepository<Atleta, Integer> { 

} 

服務

@

Controller 
@RequestMapping(value="/equipos") 
public class ServicieAtleta { 

    @Autowired 
    private DaoAtletaI iAtleta; 

    @RequestMapping(value="/insert") 
    public @ResponseBody Atleta insertrAtleta (@RequestParam(value="skill", required= true) ??? ????, 
               @RequestParam(value="result", required= true) ??? ??? 

              ) 
    { 


     Atleta atl = iAtleta.saveAndFlush(new Atleta(???? , ????); 
     return atl; 



    } 


} 

我怎麼能寫,引用了對象PARAMS?

有人可以幫助我嗎?

+0

爲什麼你需要自定義的方法呢​​,JpaRepository已經有了持久化實體的方法。 – 2014-11-20 20:18:07

+0

Kamil.H謝謝你的回答,你是對的!請檢查編輯。 – 2014-11-20 23:10:30

回答

2

只能運行update and delete modifying queries

@Modifying 
@Transactional 
@Query("delete from User u where u.active = false") 
void deleteInactiveUsers(); 

這是因爲Hibernate只支持這些DML風格的批處理操作。

對於插入,您必須使用EntityManager持久化和合並以及自定義Repository方法。

您需要在引用實體時使用實體ID。 REST服務必須將skillId作爲參數來創建Atelta實體。

Skill skill = iAtleta.findOne(skillId); 
Atleta atl = iAtleta.saveAndFlush(new Atleta(skill , result); 
+0

弗拉德Mihalcea謝謝你的答案,你是對的!請檢查編輯 – 2014-11-20 23:11:32

+0

檢查我更新的答案。 – 2014-11-21 06:36:15