Ciao a tutti... Mi trovo in un problema che a semplice vista pare sia facile, ma la verità mi trovo in difficoltà, quindi proverò a farvelo vedere sperando possiate darmi una manina...
Si tratta di JPA in Spring... Quindi ho 2 tabelle:
OK... Adesso faccio vedere le due Entity:codice:-Ruolo: -- id_ruolo INTEGER PRIMARY KEY -- nome_ruolo VARCHAR(50) -- abilitato TINYINY -Utente: -- id_utente INTEGER PRIMARY KEY -- username VARCHAR(50) -- password VARCHAR(50) -- id_ruolo INTEGER FOREIGN KEY (si referenzia a id_ruolo della tabella Ruolo) -- nome VARCHAR(50) -- cognome VARCHAR(50) -- email VARCHAR(50) -- abilitato TINYINT
Il controller:codice:@Entity @Table(name = "ruolo") public class Ruolo implements Serializable { private static final long serialVersionUID = 6024265608045458952L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_ruolo") private Integer id_ruolo; @Column(name = "nome_ruolo") private String nome_ruolo; @Column(name = "abilitato") private Boolean abilitato = true; @OneToMany(mappedBy = "ruolo", fetch = FetchType.EAGER) private List<Utente> utenti; /* --- GETTER & SETTER*/ } @Entity @Table(name = "utente") public class Utente implements Serializable { private static final long serialVersionUID = 7356319993206398640L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_utente") private Integer id_utente; @Column(name = "username") private String username; @Column(name = "password") private String password; @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, targetEntity = Ruolo.class) @JoinColumn(name = "id_ruolo", referencedColumnName = "id_ruolo") private Ruolo ruolo; @Column(name = "nome") private String nome; @Column(name = "cognome") private String cognome; @Column(name = "email") private String email; @Column(name = "abilitato") private Boolean abilitato = true; /* --- GETTER & SETTER ---*/ }
La JSP - utente.jsp:codice:@Controller @RequestMapping("/utente.htm") public class UtenteController { @Autowired private RuoloManager ruoloManager; @RequestMapping(method = RequestMethod.POST) public String onSubmit( @ModelAttribute("utente") Utente utente, BindingResult result, SessionStatus status) { System.out.println(utente.toStringUtente()); return "welcome"; } @RequestMapping(method = RequestMethod.GET) public String initForm(ModelMap model) { model.addAttribute("utente", new Utente()); return "utente"; } @ModelAttribute("listRuoli") public List<Ruolo> caricaRuoli() { return ruoloManager.listRuoli(); } }
E il risultato della stampa che è dentro il metodo onSubmit() è:codice:<form:form name="f_utente" method="POST" commandName="utente"> <table> <tr> <td>Cognome:</td> <td><form:input path="cognome" /></td> </tr> <tr> <td>Nome:</td> <td><form:input path="nome" /></td> </tr> <tr> <td>E-mail:</td> <td><form:input path="email" /></td> </tr> <tr> <td>Username:</td> <td><form:input path="username" /></td> </tr> <tr> <td>Password:</td> <td><form:password path="password" /></td> </tr> <tr> <td>Ruolo:</td> <td> <form:select path="ruolo" onchange="javascript:alert(this.value);"> <c:forEach items="${listRuoli}" var="ruolo"> <form:option label="${ruolo.nome_ruolo}" value="${ruolo}"/> </c:forEach> </form:select> </td> </tr> </table> <input type="submit" value="Salva" /> </form:form>
Utente [id_utente=null, username=ggg, password=ggg, ruolo=null, nome=ggg, cognome=ggg, email=ggg, abilitato=true]
Cioè: tutte le proprietà dell'entità Utente vengono settate tranne quella di ruolo, e non riesco a capire il perchè... Non so se magari devo annotare qualcosa... Spero che qualcuno mi dia una mano... Comunque vi ringrazio in anticipo...


Rispondi quotando