Bonjour à tous,

Je reviens avec un nouveau problème : je n'arrive pas à développer un formulaire avec Spring pour créer un objet avec une relation one-to-many sur un autre objet.

J'ai une classe Account qui possède une propriété Group :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
@Entity
@Table(name="account")
public class Account implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	//...
	@ManyToOne
	@JoinColumn(name="group_id")
	private Group group;
	//...
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Entity
@Table(name="usergroup")
public class Group {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	@Column
	private String name;
	//...
}
Dans mon formulaire de création de comptes, j'ai entre-autre une combo-box qui permet de sélectionner le groupe pour le compte en cours de création. Cette combobox s'affiche correctement.
Par contre lorsque je soumets le formulaire, j'ai une exception SQL me disant "Le champ 'group_id' ne peut être vide (null)", alors que j'ai correctement sélectionné le groupe dans le formulaire...

Comment matérialiser cette relation ?
Voici mon Controller :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Controller
@RequestMapping("/admin")
public class AdminController {
	//...
	@RequestMapping(value="/accounts/new/", method=RequestMethod.GET)
	public ModelAndView showNewAccountForm(){
		// Instantiate the model
		Map<String, Object> model = 
			new HashMap<String, Object>();
 
		// Call the service
		List<Group> groupList = this.userSvc.findAllGroups();
 
		// Populate the model
		model.put("groupList", groupList);
 
		// Create the ModelAndView
		ModelAndView modelAndView = new ModelAndView("admin_account_management_view");
		modelAndView.addAllObjects(model);
 
		// Return the ModelAndView
		return modelAndView;
	}
 
	@RequestMapping(value="/accounts/new/", method=RequestMethod.POST)
	public ModelAndView submitNewAccountForm(
			@ModelAttribute("accountForm") Account account,
			BindingResult bindingResult) throws Exception{
 
		this.userSvc.createAccount(account);
 
		return new ModelAndView("redirect:/accounts/" + account.getId() + "/");
	}
	//...
}
Et voici ma combo-box JSP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<form:select path="group" 
	items="${groupList}"
	itemValue="id" 
	itemLabel="name" 
	multiple="false"/>
Je ne vois pas comment résoudre ce problème