@Transient不在hibernate中工作

我正在使用hibernate 4.1.9。 我的代码是

@Transient private String ldapIdTemp; 

包是

 import javax.persistence.Transient; 

仍然在hibernate查询中,它不起作用并将该属性放在查询中。

查询片段的一部分(assetasset0_.ldapIdTemp为ldapIdTemp16_0_,)

我不确定我做错了什么。

您可以尝试为字段创建setter和getter,并使用@Transient注释get方法,如下所示:

 private String ldapIdTemp; @Transient public String getLdapIdTemp() { return ldapIdTemp; } public void setLdapIdTemp(String ldapIdTemp) { this.ldapIdTemp = ldapIdTemp; } 

在很大程度上取决于您如何在您的Entity或类层次结构中“集成”此字段。 此外, 字段属性 –访问可能会导致您的设置出现问题。 有关详细说明,请参阅此post 。

在你的情况下,我可以想象你要么:

  1. 实体inheritance策略中的混合字段和属性访问
  2. 在应用程序中为Hibernate使用基于XML的配置。

在这两种情况下, JPA 2.0 / 2.1规范在第2.3.1节中明确指出:

如果无法确定默认访问类型并且未通过注释或XML描述符显式指定访问类型,则会出错。 在未明确指定Access注释的情况下, 混合在实体层次结构中的字段和属性上放置注释的应用程序的行为是未定义的。

请检查您的持久Entity类是否具有基于字段 OR 属性的注释。