使用Spring Jpa插入服务的语句

时间:2014-11-20 20:15:53

标签: java spring hibernate jpa spring-data

我在Restful的服务项目上工作,我试图通过服务坚持一个实体,但我不知道如何编写引用另一个对象的参数......这是我班级的一些代码。

域类

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



    }


}

如何编写引用对象的参数?

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

您只能运行update and delete modifying queries

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

那是因为Hibernate只支持这些DML样式的批处理操作。

对于插入,您必须使用EntityManager persist and merge和自定义Repository方法。

引用实体时需要使用实体ID。 REST服务必须将skillId作为参数来创建Atelta实体。

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