package org.hibernate.examples.mapping.tree;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.QueryHints;
import org.springframework.data.querydsl.QueryDslPredicateExecutor;
import javax.persistence.QueryHint;
import java.util.List;
/**
* org.hibernate.examples.mapping.tree.TreeNodeRepository
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 12. 3. 오후 6:45
*/
public interface TreeNodeRepository extends JpaRepository<TreeNode, Long>, QueryDslPredicateExecutor<TreeNode> {
/**
* Tree 상에서 Root 노드 (부모가 없는 노드) 를 조회합니다.
*
* @return
*/
@Query("select node from TreeNode node where node.parent is null")
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
List<TreeNode> findRoots();
/**
* Tree 상에서 Root 노드 (부모가 없는 노드) 를 조회합니다.
* #findRoots() 와 같다.
*
* @return
*/
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
List<TreeNode> findByParentIsNull();
}