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

标签 java spring hibernate jsp hibernate-mapping

在 Java 中,我可以访问类的 Transient 字段的值。但是,我不访问 JSP 上的相同字段。我怎样才能使它们对 JSP 可用?

我正在使用 Hibernate 检索值,我认为对此的解决方案是使用 Transformers.aliasToBean 选项,但还有其他解决方案吗?

有没有办法摆脱 transient 注解,但在 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);
    }

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

     System.out.println(mystudents.getNames().iterator().next().getId());

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

    <c:forEach var="nm"items="${mystudents.names}">
                    ${nm.id}
                </c:forEach>

如果我输入另一个不是 transient 的名称字段,JSP 会成功显示该项目的值。

最佳答案

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

代替:

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

public void setid(String id) {
    this.tta.getMyIds().setId(id);
}

你应该有:

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

public void setId(String id) {
    this.tta.getMyIds().setId(id);
}

关于java - 由于 Hibernate Mapping 需要将某些字段作为 @Transient 但 JSP 无法访问它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29666687/

相关文章:

spring - 我可以将 SpringWebflux 与 hibernate 一起使用吗?

java - 我想通过 JPA 映射 Map<Long, List<POJO>>

java - 围绕 RuntimeException 或 Error 设计应用程序异常层次结构是否更好?

java - 如何在Java程序中处理Java类文件的无符号类型(尤其是u4)?

java - 登录网站到外部门户

java - 登录端点?

spring - 如何在 Spring Cloud Eureka Server Dashboard 中配置 DS Replicas 链接

java - 我不能在我的代码中使用 findOne() 方法

java - Spring 中是否有等效于 CDI 的 @Default 限定符?

java - 如何使用 hibernate 查询从电子邮件列表中过滤邮件域