1

在我的项目中,我有一个@Entity 抽象类事件。我很少有 @Entity 类扩展 EVENT,例如 LOGIN、CHANGE_NAME、SEND_TEXT。每个类都有自己的字段 - Login 有来自 EVENT 和 ip 的字段,CHANGE_NAME 有旧用户名的字段,SEND_TEXT 有文本本身的字段,加上你发送文本的人。
现在 - 我有一个与 Event 类有@OneToMany 关系的@Entity。

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


但我只能显示来自具体类的字段,每当我尝试从特定事件中获取数据时,我的应用程序迷恋,'couse fe Change_name 没有字段 'ip' 或 Send_Text 没有字段 oldUsername。有没有办法显示这些数据?当我调试我的应用程序时,事件集看起来不错 - 每个事件的字段都正确填写。

提前感谢您的帮助。

4

1 回答 1

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>

它就像我想要的那样工作 - 显示带有详细信息的事件列表。希望有一天它对某人有所帮助:)

于 2013-11-04T10:40:16.983 回答