Salut,
Je voulais créer une relation entre deux objet Transaction et Category
Une transaction peut avoir une catégorie (mais ce n'est pas obligatoire)
Une catégorie est une entité pas forcémenté lié à une transaction
Je n'ai pas créé de relation bidirectionnelle, je ne cherche pas à remonter aux transactions par les catégories.
J'ai donc
Par contre quand je supprime une catégorie, cela ne supprime pas les références à la catégorie dans les transactions.
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 Category extends Model implements Comparable<Category> { ... } @Entity public class Transaction extends Model { /** * Category */ @Expose @OneToOne(cascade= {CascadeType.PERSIST, CascadeType.MERGE}) public Category category ; }
Du coup j'ai créé une méthode pour le delete dans Category (c'est pas élégant, j'aurais préféré que JPA s'en charge) :
Mais le set=null ne fonctionne pas. La suppression se passe parfaitement, par contre j'ai toujours une catégorie qui vient d'on ne sait ou attaché à ma transaction. Un cache quelque part ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static void deleteById(long id) { // Remove this category from transaction Query query = JPA.em().createQuery("UPDATE Transaction t SET t.category = null WHERE t in (select tr FROM Transaction as tr where tr.category.id=:id)"); query.setParameter("id", id); query.executeUpdate(); // Remove childs delete("id",id); }
Partager