Bonjour,
j'apprends Spring Boot et pour mettre en avant mes compétences, je fais une application. Je suis malheureusement confronté à un souci depuis deux jours. Je m'explique: je suis en train une appli de facturation en essayant de relier des utilisateurs (propriétaires et/ou locataires) avec les biens.
J'ai 3 entités (Utilisateur, Bien et Utilisateur_biens_roles).
Utilisateur:
Bien:
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 @Entity public class User { @Id @Email @NotEmpty @Column(unique = true) private String email; @NotEmpty private String firstname; @NotEmpty private String username; @Size(min = 5, max = 60) private String password; private int tel;
UserBienRoles:
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 @Entity public class Bien { @Id @GeneratedValue private int id; private int prix; @NotEmpty private String rue; private String complement; @NotEmpty private String ville; private int code; @NotEmpty private String region; @NotEmpty @Column(unique = true) private String uniqid = Long.toString(new Timestamp(System.currentTimeMillis()).getTime());
Dans thymeleaf:
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
36
37
38
39
40
41
42 @Entity public class UserBienRoles { @Id @GeneratedValue private int id; @ManyToOne @JoinColumn(name="user_email") private User user; @ManyToOne @JoinColumn(name="bien_id") private Bien bien; private String role; Dans mon controller: @RequestMapping(value = "/add-lien", method = RequestMethod.GET) public String add(Model model){ model.addAttribute("userBienRoles", new UserBienRoles()); model.addAttribute("users",userServices.findAll()); model.addAttribute("biens",bienServices.findAll()); model.addAttribute("bienById",bienServices.findByUniqid(1)); return "views/user_bien/add"; } @RequestMapping(value = "/add-lien", method = RequestMethod.POST) public String add(@Valid UserBienRoles userBienRoles, BindingResult bindingResult, @RequestBody MultiValueMap<String, String> formData) { if(bindingResult.hasErrors() ) { System.out.println(bindingResult); return "views/user_bien/add"; } userBienRolesServices.createBien(userBienRoles); return "views/user_bien/list"; }
Code HTML : 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
36 <form method="post" th:action="@{/add-lien}" th:object="${userBienRoles}"> <div class="form-group"> <label for="user">Liste des utilisateurs </label> <select class="form-control" id="user" name="user" th:field="*{user}"> <option th:each="user:${users}" th:value="${user.email}" th:text="${user.username}+''+${user.firstname}"></option> </select> </div> <div class="form-group"> <label for="bien">Liste des Biens </label> <select multiple class="form-control" id="bien" name="bien" th:field="*{bien}"> <option th:each="bien:${biens}" th:value="${bien.id}" th:text="${bien.rue}+' - '+${bien.complement}+' - '+${bien.code}+' '+${bien.ville}+' ' +${bien.region}"></option> </select> </div> <div class="form-group"> <label for="role">Liste des roles </label> <select multiple class="form-control" id="role" th:field="*{role}"> <option th:value="'proprietaire'" th:text="Propriétaire"></option> <option th:value="'agent'" th:text="Agent"></option> <option th:value="'locataire'" th:text="Locataire"></option> </select> <div class="text text-danger" th:if="${#fields.hasErrors('role')}" th:errors="*{role}"> </div> </div> <input type="submit" value="Ajouter un bien" class="btn btn-primary" /> </form>
Du coup:
Ce que je comprens pas pour l'user, j'ai aucun souci
Par contre, Bien j'ai l'erreur ci dessous
Avec le débogueur de intelij, bien est à nul
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'userBienRoles' on field 'bien': rejected value [1]; codes [typeMismatch.userBienRoles.bien,typeMismatch.bien,typeMismatch.com.renttracker.renttrackeriknsa.Entity.Bien,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBienRoles.bien,bien]; arguments []; default message [bien]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'com.renttracker.renttrackeriknsa.Entity.Bien' for property 'bien'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.ManyToOne @javax.persistence.JoinColumn com.renttracker.renttrackeriknsa.Entity.Bien] for value '1'; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Provided id of the wrong type for class com.renttracker.renttrackeriknsa.Entity.Bien. Expected: class java.lang.Integer, got class java.lang.String; nested exception is java.lang.IllegalArgumentException: Provided id of the wrong type for class com.renttracker.renttrackeriknsa.Entity.Bien. Expected: class java.lang.Integer, got class java.lang.String]
dans mon navigateur, j'ai
Quelqu'un aurait un idée svp ?
Merci d'avance
Partager