如何实现这个想法?使用Controller,ServiceImple,Repository,Presentation

时间:2017-01-30 13:50:51

标签: spring spring-mvc spring-data-jpa

如何实现这个想法? 发给我信息:{“idBanner”:2,“fullnameClient”:“Aria”}。 如果单击“不包含在数据库中”,则单击“保存”并发送电子邮件businesscenter。否则,发送一条消息:“你回应了。”

(实体):单击绑定Banner,Banner绑定Businesscentr

方法帖子,正文:{“idBanner”:2,“fullnameClient”:“Aria”}

1 个答案:

答案 0 :(得分:1)

您正在尝试混合使用两种方法:使用JPA和JDBC。通常,您应该避免在JPA中使用本机查询,JPA实体具有自己的生命周期,并由EntityManager管理。

您的服务代码可能如下:

     @Transactional
     public Click sentSaveClick(String fullnameClient, long idBanner) {
        Banner banner = bannerRepositor.findOne(idBanner); //get existing banner from DB
        Click click = new Click(); //create new detached instance of Click class
        click.setBanner(banner); //set banner
        click.setFullnameClient(fullnameClient); //set fullName
        click = clickRepository.save(click); //store it to DB and get managed instance of Click
        return click;
    }

还要注意在查询中返回的类型。例如,sent会返回String,但idClick的类型为long

您可以使用JPA版本替换此查询:

    @Query("FROM Click WHERE fullnameClient = :fullnameClient AND banner.idBanner = :idBanner")
    Click sent(@Param("fullnameClient") String fullnameClient, @Param("idBanner") long idBanner);

和服务:

 @Transactional
 public boolean sent(String fullnameClient, long idBanner) {
    Click click = clickRepository.sent(fullnameClient, idBanner); 
    return click != null;
}