Comment aurais-je carte une relation parent/enfant sur le même objet avec JPA

Après la lecture de ce post JPA carte de la relation entité parentID j'ai essayé de l'appliquer à mon code mais cela ne fonctionne pas pour moi.

C'est le code que j'ai dans mon Objet

@Entity
public class Category extends Model {

public static final int EASY = 1;
public static final int MEDIUM = 2;
public static final int HARD = 3;
public static final int VERRY_HARD = 4;

public String name;
public String fullName;
public boolean active;
public Date createdOn;
public int difficulty;

@ManyToOne
@JoinColumn(name = "FK_PARENT_CATEGORY")
public Category parentCategory;

@OneToMany(mappedBy="parentCategory", cascade = CascadeType.ALL)
public List<Category> subCategories;

public Category(Category parentCategory, String name, boolean active) {
    this.name = name;
    this.active = active;
    this.parentCategory = parentCategory;
    this.subCategories = new ArrayList<Category>();
    this.createdOn = new Date();
    this.difficulty = Category.EASY;
    this.fullName = name;
    if (parentCategory != null)
        this.fullName = parentCategory.fullName + "/" + this.fullName;

}

Maintenant, c'est le test que j'ai exécuter

@Test
public void testParentAndSubCategories() {

    //Create the parent category
    new Category(null, "Sport", true).save();
    Category sportCat = Category.find("byName", "Sport").first();

    //Test the newly created parent category state
    assertNotNull(sportCat);
    assertEquals("Sport", sportCat.name);
    assertEquals(true, sportCat.active);
    assertEquals("Sport", sportCat.fullName);
    assertNull(sportCat.parentCategory);
    assertEquals(0, sportCat.subCategories.size());

    //Create the subCategory 
    new Category(sportCat, "Hockey", false).save();
    Category hockeyCat = Category.find("byName", "Hockey").first();

    //Test the newly created sub category
    assertNotNull(hockeyCat);
    assertEquals("Hockey", hockeyCat.name);
    assertEquals(false, hockeyCat.active);
    assertEquals("Sport/Hockey", hockeyCat.fullName);
    assertNotNull(hockeyCat.parentCategory);
    assertEquals("Sport", hockeyCat.parentCategory.name);
    assertEquals(0, sportCat.subCategories.size());

    //Fetch new values for parent category
    sportCat = Category.find("byName", "Sport").first();

    //Test updated parent category
    assertEquals(1, sportCat.subCategories.size());
    assertEquals("Hockey", sportCat.subCategories.get(0).name);

}

Cette ligne de le test échoue toujours.

//Test updated parent category
    assertEquals(1, sportCat.subCategories.size());

Basé sur la configuration que j'ai pour mes relations, Hibernate ne peut pas récupérer de la sous-catégorie et je ne sais pas pourquoi. Maintenant, j'ai vraiment espère vraiment que ce n'est pas quelque chose de stupide de ma part parce que je vais me tirer une balle (Même si il est tard et je suis fatigué). Par le moyen n'est pas l'esprit du public des variables dans le code, je suis en utilisant le jeu!(playframework) et il prend soin de l'encapsulation. Merci d'avance pour toute aide

InformationsquelleAutor Alain | 2010-12-09