Spring Hibernate中的@Transient方法调用


问题内容

我有一个Pojo类,在其中创建一个未与数据库表映射的字段。所以我必须声明字段Declaration以及setter和getter方法@Transient,否则它将显示错误。

@Transient
private String docHistoryString="";

@Transient
public String getDocHistoryString() {
    return docHistoryString;
}

@Transient
public void setDocHistoryString(String docHistoryString) {
    this.docHistoryString = docHistoryString;
}

现在,我的问题出在控制器上。我已经在此瞬态字段中设置了一些值,但是当我尝试在view(JSP)中使用EL访问此变量时,它没有给出值。我认为这是因为我在get方法中使用了@transient批注。


问题答案:

所有Hibernate注释(包括注释)@Transient必须根据访问类型进行应用。默认情况下,它将与@Id应用相同。也就是说,如果您放置@Id在字段上,则必须将其应用于@Transient该字段。而且,如果您申请@Id吸气剂方法,则必须申请@Transient方法。设置方法总是被忽略。

不过,它可以自定义(根据文档),因此请确保没有人对访问类型做过奇怪的事情。