2013-11-02 5 views
1

내 프로젝트에는 @Entity 추상 클래스 이벤트가 있습니다. 몇 가지 @Entity 클래스가 LOGIN, CHANGE_NAME, SEND_TEXT와 같은 EVENT를 확장했습니다. 각 클래스에는 자체 필드가 ​​있습니다. 로그인에는 EVENT와 IP의 필드가 있으며 CHANGE_NAME에는 이전 사용자 이름이있는 필드가 있고 SEND_TEXT에는 텍스트가있는 필드와 텍스트를 보내는 사람이 있습니다.
이제 Event 클래스에 @OneToMany 관계가있는 @Entity가 있습니다.jsf 상속 추상 클래스

@OneToMany(mappedBy = "wycenioneAuta", cascade = {CascadeType.DETACH, CascadeType.MERGE, 
      CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.EAGER) 
    @Access(AccessType.FIELD) 
    private Set<Event> event= new LinkedHashSet<>(); 

이 @Entity에서 수행 된 모든 이벤트가 저장됩니다. 지금 내 문제를 설명합니다 :
이벤트 기록을 표시하려고합니다. 나는

<ui:repeat value="class.event var="e"> 
#{e.id}, 
#{e.date}, 
#{e.user.name} 
</ui:repeat> 



을 시도했지만 내가 할 수있는 내가 특정 이벤트에서 데이터를 얻으려고 할 때마다 구상 클래스, 내 응용 프로그램 호감, 만 표시 필드 '나오긴 f.e. Change_name에 'ip'필드가 없거나 Send_Text에 oldUsername 필드가 없습니다. 이러한 데이터를 표시 할 수있는 방법이 있습니까? 내 응용 프로그램을 디버깅 할 때 이벤트 세트가 좋아 보이는데 모든 이벤트에 필드가 올바르게 채워져 있습니다.

도움을 미리 감사드립니다.

답변

1

그래서 여기 뭔가를해야합니다. 그래서이 문제를 어떻게 해결해야합니까? 구체적인 클래스에서 몇 가지 @Transient 메서드를 만들었습니다. 그들은이처럼 보였다 :

@Transient 
public boolean isChangeName(){ 
    return (this instanceof ChangeName); 
} 

내 페이지 : 그것은 내가 원하는 것처럼 작동

<ui:repeat value="#{entry.eventList}" var="e"> 
    #{e.isChangeName? e.oldName: ""} 
    #{e.isSendText? e.text: ""} 
</ui:repeat> 

- 세부 이벤트의 목록을 보여줍니다. 누군가가 언젠가는 도움이되기를 바랍니다.

관련 문제