2017-04-10 1 views
1

@PostLoad 안에있는 DB로부터의로드에 대한 추가 데이터로 엔티티를 풍부하게하고 싶습니다.@PostLoad로 표시된 Hibernate 관리 엔티티 메소드에서 Spring Bean에 접근하기

@PostLoad 방법으로 스프링 관리 빈에 액세스하려면 어떻게해야합니까?

@Service 
public class StaticApplicationContext implements ApplicationContextAware { 
    private static ApplicationContext ctx = null; 

    @Override 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
     ctx = applicationContext; 
    } 

    public static ApplicationContext getApplicationContext() { 
     return ctx; 
    } 
} 

@Entity 
public class Car { 
    @Id 
    private Long id; 
    ... 
    @Transient 
    private List<XType> details; 

    @PostLoad 
    private void onLoad() { 
     XTypeRepository repo = StaticApplicationContext.getCtx() 
       .getBean(XTypeRepository.class) ; 
     this.details = repo.findByCarId(this.id); 
    } 
} 
Accessing spring beans in static method

설명 static 액세스

대응 아이디어는 더 관용적 솔루션/프레임 워크 설탕이 있습니까 :

나는 정적 접근과 추한 솔루션을 사용할 수 있습니까?

답변

1
@OneToMany 
@JoinFormula(value = "SELECT * FROM xTypeTable xt WHERE xt.carId = id") 
private List<XType> pastArticles; 

JoinFormula를 사용하고 표준 도구로 데이터를로드 할 수 없습니까? XType에 대한 데이터를 검색하는 SQL을 작성하십시오. 위 예제에서 id를 id 속성의 열 이름으로 바꿉니다 (다른 경우)

관련 문제