Bonjour,
J'ai un bean "Adresse" qui contient différentes propriétés (String, int, ....) et une propriété "Localité" qui est un autre bean.
J'ai un petit script qui créé en base quelques enregistrements.
Quand j'utilise mon application pour enregistrer des modifications faites sur un bean, je perds l'ID de la localité associée à mon adresse.
Voici quelques bouts de code :
Le bean "Adresse"
Le bean "Localite" :
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
43
44
45
46
47
48
49
50 @Entity @Table(name = "dbo.AD_ADRESSE") public class Adresse extends BusinessEntite { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "INT_IDENTITE_ID", nullable = false) private Identite identite; @Enumerated(EnumType.STRING) @Column(name = "AD_TYPE_ADRESSE_CI", nullable = false) private TypeAdresseCi typeAdresse; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "AD_PAYS_ID", nullable = false) private Pays pays; @Column(name = "RUE_NUMERO", length = 100) private String rueNumero; @Column(name = "CASE_POSTALE", length = 50) private String casePostale; // Localité pré-enregistrée, en tant qu'objet @ManyToOne(cascade = CascadeType.PERSIST) @JoinColumn(name = "AD_LOCALITE_ID") private Localite localite; // Code postal étranger, en saisie libre @Column(name = "CODE_POSTAL_LIBRE", length = 100) private String codePostalLibre; // Localité étrangère, en saisie libre @Column(name = "LOCALITE_LIBRE", length = 100) private String localiteLibre; @Column(name = "NO_TEL_PROF", length = 30) private String noTelProf; @Column(name = "NO_TEL_PRIVE", length = 30) private String noTelPrive; @Column(name = "NO_TEL_MOBILE", length = 30) private String noTelMobile; @Column(name = "NO_FAX", length = 30) private String noFax; @Column(name = "EMAIL", length = 30) private String email;
Les 2 étendent une classe mère :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Entity @Table(name = "dbo.AD_LOCALITE") public class Localite extends BusinessEntite { @Column(name = "CODE_POSTAL", length = 10, nullable = false, unique = true) private int codePostal; @Column(name = "NOM", length = 255, nullable = false) private String nom;
Et le code de sauvegarde des modifications :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @MappedSuperclass @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class BusinessEntite { @Id @Column(name = "ID", nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "VERSION", nullable = false) @Version private int version;
Qqun a-t-il une idée de mon problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // Injection du manager qui s'occupe de la connexion avec la BDD @PersistenceContext(unitName = "erp_PU") private EntityManager m_em; @Override public void updateIdentite(Identite identite) { try { m_em.merge(identite); } catch (Throwable e) { throw new RWBEjbException(e); } }
Merci d'avance pour votre aide
Partager