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

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 ;
}
Par contre quand je supprime une catégorie, cela ne supprime pas les références à la catégorie dans les transactions.

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) :

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);
    }
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 ?