2013-11-02 200 views
1

在我的項目中,我有一個@Entity抽象類EVENT。我有幾個@Entity類擴展EVENT,如LOGIN,CHANGE_NAME,SEND_TEXT。每個類都有自己的字段 - 登錄包含來自EVENT和IP的字段,CHANGE_NAME包含舊用戶名字段,SEND_TEXT字段包含文本本身,以及您發送文本的人員。
現在 - 我有@Entity與@OneToMany關係的事件類。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<>(); 

它存儲在這個@實體上執行的所有事件。現在我描述我的問題:
我想顯示事件的歷史記錄。我試圖

<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> 

它的工作原理就像我想 - 顯示了事件的詳細信息的清單。 希望它有一天能幫助別人:)