簡體   English   中英

設置多對一關系spring mvc

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM