如何实现这个想法? 发给我信息:{“idBanner”:2,“fullnameClient”:“Aria”}。 如果单击“不包含在数据库中”,则单击“保存”并发送电子邮件businesscenter。否则,发送一条消息:“你回应了。”
(实体):单击绑定Banner,Banner绑定Businesscentr
方法帖子,正文:{“idBanner”:2,“fullnameClient”:“Aria”}
答案 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;
}