由于Hibernate Mapping需要将某些字段作为@Transient,但JSP无法访问它们

Dan*_*own 6 java spring jsp hibernate hibernate-mapping

在Java中,我可以访问类的Transient字段的值.但是,我不能访问JSP上的相同字段.如何让它们可用于JSP?

我正在使用Hibernate检索值,我认为这个解决方案将是Transformers.aliasToBean选项但是还有其他任何解决方案吗?

反正有没有摆脱瞬态注释但在Hibernate中具有相同的映射?在这种情况下,问题将得到解决.

@AssociationOverrides({
        @AssociationOverride(name = "tta.names", joinColumns = @JoinColumn(name = "id"))})
public class Names implements java.io.Serializable {

    private static final long serialVersionUID = -30956546435023625398L;

    @EmbeddedId
    private TableToAssociate tta = new TableToAssociate();


    @Transient
    public String getid() {
        return tta.getMyIds().getId();
    }

    public void setid(String id) {
        this.tta.getMyIds().setId(id);
    }
Run Code Online (Sandbox Code Playgroud)

在Java中,我可以使用以下代码访问它们

     System.out.println(mystudents.getNames().iterator().next().getId());
Run Code Online (Sandbox Code Playgroud)

在JSP中,我无权访问它们!

    <c:forEach var="nm"items="${mystudents.names}">
                    ${nm.id}
                </c:forEach>
Run Code Online (Sandbox Code Playgroud)

如果我放置另一个非瞬态名称字段,JSP会成功显示该项的值.

Vla*_*cea 3

尝试重命名方法以匹配 JavaBean 规范。

代替:

@Transient
public String getid() {
    return tta.getMyIds().getId();
}

public void setid(String id) {
    this.tta.getMyIds().setId(id);
}
Run Code Online (Sandbox Code Playgroud)

你应该有:

@Transient
public String getId() {
    return tta.getMyIds().getId();
}

public void setId(String id) {
    this.tta.getMyIds().setId(id);
}
Run Code Online (Sandbox Code Playgroud)