1. 程式人生 > >jpa 自定義返回物件

jpa 自定義返回物件

開發十年,就只剩下這套架構體系了! >>>   

任何ORM框架都少不了開放自定義sql的問題。jpa自然也不例外,很多場景需要寫複雜sql的。

首先定義一個方法簽名,然後打上@Query註解。像下面這樣,需要注意nativeQuery,這個表示query中的字元以原始的sql語句執行,也就是不做任何調整。你寫啥,就執行啥sql語句。但是想返回自定義的實體,Sorry,做不到。的用另一種方式。

@Query(value = "SELECT * from table where id= :id", nativeQuery = true)
List<aa> getByaaId(@Param("id") BigInteger id);

 

下面這個就是實現自定義的實體方法。首先需要定義個實體,這個實體必須包含無參和全參建構函式。然後去掉nativeQuery,同時還有一點必須注意,寫的語句裡面不是資料庫中對應的實際表名,而是你定義的實體對映。比如下面的table1和table2,其實都是你定義的實體類的名字,不是你的資料庫表名,是你程式碼中對映資料表的實體類名。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class aaDto {

    private String aa;

    private String bb;

    private String cc;

}
@Query(value = "SELECT new com.xxx.xxx.dto.aaDto" +
        "(i.aa,i.bb,i.cc)" +
        "FROM table1 i JOIN table2 e on i.id=e.id")
List<a