2015-11-17 65 views
0

如果我有两个豆子,一个为一个团队,另一个为玩家。一个球队不能没有球员,球员必须属于一个球队。如果我的两个bean基本上是如何被声明的(假设存在getter和setter)。如果我遵循MVC设计模式,设计控制器的最佳实践是什么,或者托管bean如何将这些对象持久化到数据库?提交后,网络会询问球队的名称和球员的名字。我需要两个托管的bean,一个用于玩家,另一个用于团队?还是我只需要一个管理bean,因为一个团队拥有玩家?如何为与JPA具有一对多关系的对象创建控制器?

@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; 
} 

回答

0

我会将它按功能分组在控制器中,而不是按实体bean分组。所以,一个控制器就足够了。

选择名称一直是编程中最棘手的部分之一:)你可以去TeamControllerPlayerController,看看什么更合适。

0

,我在你的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(..)` 
    } 
创建就这样

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

一个新的托管bean

相关问题