簡體   English   中英

如何為與JPA具有一對多關系的對象創建控制器?

[英]how to create controllers for objects with a one to many relationship with JPA?

如果我有兩個豆子,一個給團隊,另一個給球員。 沒有球員,團隊就無法存在,而球員必須屬於一個團隊。 如果基本上聲明了我的兩個bean在下面的狀態(假設存在getter和setter)。 如果我遵循MVC設計模式,那么設計控制器或托管Bean來將這些對象持久保存到數據庫的最佳實踐是什么? 提交后,來自的網站會要求提供球隊的名稱,並要求球員的姓名。 我需要兩個托管bean,一個用於球員,一個用於團隊嗎? 還是因為團隊擁有球員,我是否只需要一個托管bean即可?

@Entity
@Table(name = 'teams')
public class Team {

  @Id
  @GeneratedValue
  private Integer id;

  private String name;

  @OneToMany(mappedBy='team', cascade=CascadeType.ALL)
  private List<Player> players = new ArrayList<Player>();
}

@Entity
@Table(name = 'players')
public class Player {

  @Id
  @GeneratedValue
  private Integer id;

  private String lastname;

  @ManyToOne
  @JoinColumn(name = 'team_id')
  private Team team;
}

我將按功能而不是按實體Bean將其分組在控制器中。 因此,一個控制器就足夠了。

選擇名稱始終是編程中最棘手的部分之一:)您可以選擇TeamControllerPlayerController ,看看哪種更合適。

對我來說,只創建一個新的托管bean

public class TeamBean {
     public String nameTeam;
     public list<String> namePlayer;
     // getter & setter

在你的jsp中

<input .. name="nameTeam"> //team name
// the important is the attribute name must be the same as your managedbean
<input .. name="namePlayer"> //player 1 name
<input .. name="namePlayer"> //player 2 name

....

你的控制器是這樣的

@Controller
public class YourController {
    ....

    @RequestMapping(...) 
    public String save-team(@ModelAttribute TeamBean teamBean , HttpServletRequest request) {
        // now you have the object teamBean you can persist it in your db
        // for example
        Team team = yourTeamDAO.save(new Team(teamBean.nameTeam))
        for(Player p : teamBean.namePlayer){
             yourPlayerDAO.save(new Player(p,team))    
        }
        //just declare in your entities the constructors that i have used `new Player(...)` , `new Team(..)`
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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