Spring 如何实现这个想法?使用控制器、ServiceImple、存储库、演示文稿
如何实现这个想法? 给我发送信息:{“idBanner”:2,“fullnameClient”:“Aria”}。 如果单击不包含在数据库中,则单击保存并发送电子邮件businesscenter。否则,发送一条消息:“您已响应” (实体):单击绑定横幅,横幅绑定BusinesscentrSpring 如何实现这个想法?使用控制器、ServiceImple、存储库、演示文稿,spring,spring-mvc,spring-data-jpa,Spring,Spring Mvc,Spring Data Jpa,如何实现这个想法? 给我发送信息:{“idBanner”:2,“fullnameClient”:“Aria”}。 如果单击不包含在数据库中,则单击保存并发送电子邮件businesscenter。否则,发送一条消息:“您已响应” (实体):单击绑定横幅,横幅绑定Businesscentr 方法帖子,正文:{“idBanner”:2,“fullnameClient”:“Aria”}您试图混合使用两种方法:使用JPA和JDBC。通常,您应该避免在JPA中使用本机查询,JPA实体有自己的生命周期,并由E
方法帖子,正文:{“idBanner”:2,“fullnameClient”:“Aria”}您试图混合使用两种方法:使用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;
}
问题是什么?哪个查询?有什么例外?@Query(value=“插入到Click(fullnameClient,idBanner)值(:fullnameClient,:idBanner)”,nativeQuery=true)字符串sentsaveclick(@Param(“fullnameClient”)字符串fullnameClient,@Param(“idBanner”)长idBanner);为什么您要尝试使用JPA和Spring数据JPA?JPA为您管理所有这些,但您正在努力解决这些问题。让JPA做它自己的事情,而不是试图比您的JPA映射框架更智能(否则不要使用JPA,而只是使用普通的JDBC)。此外,本机插入不应返回
字符串
。您希望得到什么结果?混合使用两种方法:使用JPA和JDBC-这是因为使用@Query?因为您试图在JPA之外使用nativeQuery
直接将数据存储到数据库中。更新答案。但是获取HTTP状态415。{“idBanner”:2,“fullnameClient”:“三亚”}。预期返回响应单击“you have response”,因为数据库中有一条记录。因为在注释@RequestMapping
中,您已经生成了producted=“application/json”
,但是您已经响应了
显然不是json@NewWave这要看情况了,用户正在等待来自POST/sentmail
的何种信息。如果他正在等待有关BusinessCenter的所有信息,那么我建议他创建新的businessscentrepresentation
,并将其返回。如果像以前一样,用户只等待电子邮件,请向他发送简单的json{“email”:ema@il.com“}
。换句话说,保持你的外部合同尽可能简单。