![](/img/trans.png)
[英]how to fetch data using Rest API in spring boot from multiple tables
[英]How to fetch data from multiple tables in spring boot using mapping in Spring Boot's JPA repository
我創建了四個實體類:
@Entity
@Table(name = "DashboardRegionCountry")
public class DashboardRegionCountry implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "dashboardId")
private long dashboardId;
@OneToOne(targetEntity = Country.class)
@JoinColumn(name="countryId")
private Country country;
@OneToOne(targetEntity = Region.class)
@JoinColumn(name="regionId")
private Region region;
@ManyToOne()
@JoinColumn(name="dashboardId")
private Dashboard dashboard;
}
@Entity
@Table(name = "Dashboard")
public class Dashboard implements Serializable {
@Id
@Column(name = "dashboardId")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long dashboardId;
@Column(name = "dashboardName")
private long dashboardName;
@OneToMany(mappedBy= dashboard)
private List<DashboardRegionCountry> dashboardRegionCountry;
}
@Entity
@Table(name = "Country")
public class Country implements Serializable {
@Id
@Column(name = "countryId")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long countryId;
@Column(name = "shortName")
private String shortName;
@Column(name = "longName")
private String longName;
}
@Entity
@Table(name = "Region")
public class Region implements Serializable {
@Id
@Column(name = "regionId")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long regionId;
@Column(name = "shortName")
private String shortName;
@Column(name = "longName")
private String longName;
}
各個實體的表模式如下:
儀表板地區國家:
+----------------+---------------+
| Field | Type |
+----------------+---------------+
| id(PK) | Number(11) |
| dashboardId(FK)| Number(11) |
| countryId | Number(11) |
| regionId | Number(11) |
+-------------+------------------+
Dashboard:
+----------------+---------------+
| Field | Type |
+----------------+---------------+
| dashboardId(PK)| Number(11) |
| dashboardName | varchar(11) |
+-------------+------------------+
Country:
+-------------+---------------+
| Field | Type |
+-------------+---------------+
| countryId(PK)| Number(11) |
| shortName | Varchar2(10) |
| longName | Varchar2(10) |
+-------------+---------------+
Region:
+-------------+---------------+
| Field | Type |
+-------------+---------------+
| regionId(PK)| Number(11) |
| shortName | Varchar2(10 |
| longName | Varchar2(10) |
+-------------+---------------+
基本上,當用戶輸入dashboardId 時,我們想要獲取dashboardDetails 以及該地區和該地區的各個國家。 如上所述,我的表中只有地區和國家 ID,它們的名稱出現在其他表中。 我想顯示我的示例 output 類似:
{
"dashboardId":20,
"DashboardRegionCountry": [{
"Region":"ASIA",
"dashboardId":["India","China"]
},
{
"Region":"NAM",
"dashboardId":["USA","Canada"]
}
]
}
我正在嘗試編寫 JPA 存儲庫,但想知道是否可以編寫如下內容:
@Repository
public interface DashboardRegionCountryRepository extends JpaRepository<DashboardRegionCountry, Long>{
List<Map<Long,Country>> findRegionBy_RegionId(Long dashboardId);
}
我正在嘗試在一個查詢中獲取所有數據,任何建議都會非常有幫助
只需使用getById
獲取相應的DashboardRegionCountry
(查看參考文檔),它將包含相關的Country
和Region
。 如果您不想在您的實體中公開所有Country
和Region
信息,我建議您將它們 map 提供給 DTO,該 DTO 將是您想要在控制器上返回某些內容時使用的 model。
findByRegion_regionId 試試這個,這會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.