при выборе дерева JPA childNodes всегда имеет значение null - PullRequest
2 голосов
/ 16 декабря 2010

Я пытаюсь выбрать древовидную структуру с помощью JPQL. Картография работает немного иначе, чем я ожидал. Он отображает древовидную структуру на родительский, но List childNodes всегда пуст :( Вот мое отображение:

@Entity
@NamedQueries({
      @NamedQuery(name = "TreeNode.findAllTree", 
              query = "select p from TreeNode p  " +
                    "LEFT JOIN fetch p.parentNode"),
    })
public class TreeNode {
    @Id
    private long id = 0; 

    @ManyToOne
    @JoinColumn(name = "parent_id")
    public TreeNode parentNode;

    @OneToMany(mappedBy="parentNode")
    public List<TreeNode> childNodes; 

Вот запрос:

List<TreeNode> list = super.getEntityManager().createNamedQuery("TreeNode.findAllTree").getResultList();

Вот мои данные таблицы:

 ID, PARENT_ID
  1      NULL
  2         1
  3         1
  4         3

Я пробовал нетерпеливый и ленивый FetchType, но childNodes всегда пуст;

1 Ответ

1 голос
/ 16 декабря 2010

Одд. Какой провайдер и версию JPA вы используете?

Если вы удалите объединение, вы получите детей? Какой SQL выполняется для детей?

Когда вы устанавливаете родительский элемент для узла, вы также добавляете дочерний элемент? Если нет, тогда родительский объект без дочерних элементов может быть кэширован в вашем EntityManager. Получает ли обновление дочерние элементы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...