2012-10-21 3 views
1

Entity 개체에 다음 메시지가 나타납니다.기본 속성 유형은 IDao 인텔리전스 메시지가 아니어야합니다.

기본 속성 유형은 안가 같이 사용되는 IDao

:

@Entity 
@Table 
public final class MyEnity { 

    @Resource(name = "Dao") 
    private IDao dao; 

나는 이름이 나쁜 알고 있지만, 내 다오을 주입의 문제는 무엇인가 (저장소로 주석 됨)을 최대 절전 엔티티로 주석 처리 된 내 도메인 개체에 추가 할 수 있습니까? 그리고 IDao는 Dao 클래스에 의해 구현 된 인터페이스입니다 ...

답변

6

IDao은 엔티티에 주입되는 처리 요소 인 것처럼 보이며 유지하려고하지 않습니다. 그렇다면 transient으로 표시해야합니다. ORM은 엔티티에 대한 CRUD 작업 중에이를 무시합니다. @Configurable을 할

@Resource(name = "Dao") 
private transient IDao dao; 

BTW, 당신의 실체를 볼 수 없습니다. dao을 (를) 어떻게 투입 하시려고요? ORM은 기본 constrcutor를 사용하여 MyEntity 유형의 새 개체를 만들고 setters를 호출하여 데이터베이스에서 값을 설정합니다. IDao dao은 인스턴스가 스프링 관리 빈이 아니므로 주입되지 않습니다. MyEntity@Configurable으로 표시하여 스프링 관리를 수행하면 new 연산자를 사용하여 생성 된 인스턴스가 자원을 주입하게됩니다.

+0

OK, 도메인 객체에 DAO를 삽입하는 더 좋은 방법이 있습니까? – NimChimpsky

+0

'new' 연산자를 사용하여 생성 된 객체에 리소스를 주입하는 유일한 방법은'@ Configurable'입니다 (http://vikdor.blogspot.in/2012/08/using-configurable-to-inject-resources.html). annotation . – Vikdor

+0

나는 아마도 이것이 실수로, 아마도 이것이 최선의 생각이 아닐 것이라고 생각하는 인상을 받고 있습니까? reposity/dao를 도메인 객체와 함께 사용할 수있는 다른 방법을 알 수 없습니까? – NimChimpsky

관련 문제