Java 使用Spring Jpa的服务的Insert语句

Java 使用Spring Jpa的服务的Insert语句,java,spring,hibernate,jpa,spring-data,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

我正在做一个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


}

Dao接口

public interface DaoAtletaI extends JpaRepository<Atleta, Integer> {

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

有人能帮我吗?

您只能运行:

这是因为Hibernate只支持这些DML风格的批处理操作

对于插入,必须使用EntityManager持久化和合并以及自定义存储库方法

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

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

为什么需要自定义方法呢?JpaRepository已经有了持久化实体的方法!请检查编辑。Vlad Mihalcea谢谢你的回答,你是对的!请检查编辑
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;



    }


}
@Modifying
@Transactional
@Query("delete from User u where u.active = false")
void deleteInactiveUsers();
Skill skill = iAtleta.findOne(skillId);
Atleta atl = iAtleta.saveAndFlush(new Atleta(skill , result);