【问题标题】:JSF Displaying OneToMany EntityJSF 显示 OneToMany 实体
【发布时间】:2014-12-03 14:59:28
【问题描述】:

我有两个实体连接在一起并执行一个命名查询。当我尝试在我的 JSF 页面上显示它们时,我看不到数据。但是,在调试中我可以看到实体和数据。

JSF 页面

<ui:repeat id="headerList" var="header" value="#{tModel.tHeader}">  
    <tr>
        <td>#{header.rbid}</td>
        <td>#{header.uploadTimestamp}</td>
        <td>
            <ui:repeat id="authList" var="auth" value="#{header.auth}">
                #{auth.username} 
            </ui:repeat>    
        </td>
    </tr>
</ui:repeat>

型号

public Collection<THeader> getTHeader() {
    return tHeader;
}

public void init() {
    tHeader = getEntityManager().createNamedQuery("THeader.findByUsername").setParameter("username", userBeanRef.get().getUserName()).getResultList();
}

标题实体

@Entity
@Table(name = "theader")
@NamedQueries({
@NamedQuery(name="THeader.findByUsername",
        query="SELECT h, a FROM THeader h INNER JOIN h.auth a WHERE a.username = :username")
})

public class THeader {

private static final long serialVersionUID = -5906810279679409035L;

@Column(name = "rbid")
private String rbid;

@JoinColumn(name = "header_id")
@OneToMany
private List<TAuth> auth;

@Column(name = "upload_timestamp")
@Temporal(TemporalType.TIMESTAMP)
private Date upload_timestamp;

public String getRbid() {
    return rbid;
}

public void setRbid(String rbid) {
    this.rbid = rbid;
}

public List<TAuth> getAuth() {
    return auth;
}

public void setAuth(List<TAuth> auth) {
    this.auth = auth;
}

public Date getUploadTimestamp() {
    return upload_timestamp;
}

public void setUploadTimestamp(Date upload_timestamp) {
    this.upload_timestamp = upload_timestamp;
}

}

授权实体

@Entity
@Table(name = "tauth")
public class TAuth {

private static final long serialVersionUID = -5906752349589409035L;

@Column(name = "username")
private String username;

@Column(name = "header_id")
private int header_id;

public int getHeader_id() {
    return header_id;
}

public void setHeader_id(int header_id) {
    this.header_id = header_id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

}

【问题讨论】:

    标签: java jsf jpa


    【解决方案1】:

    问题出在 UI 中:重复我正在使用 var="header"。使用不同的名称,例如 var="hdr" 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2017-01-31
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多