如何實現這個想法? 給我發信息:{「idBanner」:2,「fullnameClient」:「Aria」}。 如果點擊不包含在數據庫中,則點擊保存併發送電子郵件業務中心。否則,發送一條消息:「你回覆了」。如何實現這個想法?使用Controller,ServiceImple,Repository,Presentation
(實體):單擊綁定橫幅,橫幅綁定Businesscentr
方法後,身體:{ 「idBanner」:2, 「fullnameClient」: 「詠歎調」}
如何實現這個想法? 給我發信息:{「idBanner」:2,「fullnameClient」:「Aria」}。 如果點擊不包含在數據庫中,則點擊保存併發送電子郵件業務中心。否則,發送一條消息:「你回覆了」。如何實現這個想法?使用Controller,ServiceImple,Repository,Presentation
(實體):單擊綁定橫幅,橫幅綁定Businesscentr
方法後,身體:{ 「idBanner」:2, 「fullnameClient」: 「詠歎調」}
你試圖將兩種方法:使用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;
}
混合兩種方法:使用JPA和JDBC - 這是因爲使用@Query? –
,因爲您嘗試在JPA之外直接使用'nativeQuery'將數據存儲到數據庫中。 –
更新回答。但獲得HTTP狀態415. {「idBanner」:2,「fullnameClient」:「sanya」}。預期回報responseonclick =「您已回覆」,因爲數據庫中有記錄。 –
問題是什麼? –
哪個查詢?什麼是例外? –
@Query(value =「插入點擊(fullnameClient,idBanner)VALUES(:fullnameClient,:idBanner)」,nativeQuery = true) String sentsaveclick(@Param(「fullnameClient」)String fullnameClient,@Param(「idBanner」) long idBanner); –