[英]set up a many-to-one relationship spring mvc
我試圖學習一些jsp以及spring框架。
我的應用程序有2個sql表。 “用戶”和“位置”
每個位置都屬於一個用戶。 位置表具有引用用戶ID的外鍵。
我想實現我的應用程序,以便給定用戶(即“ user1”),我可以調用user1.getLocations()來檢索與該用戶關聯的位置列表,但是我不知道在哪里實現。 (在User類中,在UserDao中,在UserManager中,在應列出所有用戶及其用戶的頁面的控制器上,等等?)?
---- edit:在控制器上:
List<User> users = userManager.getUsers();
for(User user:users) {
user.setLocations(locationManager.getLocations(user));
}
myModel.put("users", users);
return new ModelAndView("location", "model", myModel);
}
這是常規解決方案嗎? locationManager.getLocations(user)返回與用戶具有相同ID的位置列表。
最有可能在UserDao類中,因為它聽起來像是數據庫操作。 同樣,該方法應該更類似於此簽名userService.getLocations(userId) ,而不是user1.getLocation(),user2.getLocation()。 等
您可以快速了解MVC模式 ,了解有關Spring MVC和教程的更多信息。
您絕對需要從視圖將您的方法調用鏈接到dao。 因此傳統上是這樣進行的:來自視圖的請求(在MVC中為V)->控制器調度(在MVC中為C)->服務類(在MVC中為M的一部分)-> dao類(在MVC中也是M的一部分),並且通過翻轉方向發送回查看。
我的應用程序有2個sql表。 “用戶”和“位置”
每個位置都屬於一個用戶。 位置表具有引用用戶ID的外鍵。 我想實現我的應用程序,以便給定用戶(即“ user1”),我可以調用user1.getLocations()來檢索與該用戶相關聯的位置的列表,但是我不知道在哪里實現。
我不會創建單獨的DAO方法來處理此問題,“ user1.getLocations”是正確的方法。 Hibernate等。 支持諸如實體之間的集合(如列表和集合)的表關系的延遲加載和映射之類的東西,這適用於此類情況。 這是一個簡單的示例,根據您的表的命名方式等,它可能不是即開即用的,但是您會明白的:
@Entity
public class User
{
@OneToMany(mappedBy="user")
private List<Location> locations;
public List<Location> getLocations()
{
return locations;
}
}
@Entity
public class Location
{
@ManyToOne
@PrimaryKeyJoinColumn
private User user;
public User getUser()
{
return user;
}
}
請注意,即使數據庫中的關系僅是從位置到用戶,也可以從用戶端獲取位置(用戶@OneToMany中的“ mappedBy”屬性實際上是在引用的“另一端”告訴哪個字段“(位置)指向該用戶)。
我建議使用Spring -tutorials查找一些JPA和/或Hibernate,以獲取更深入的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.