@Transient不在hibernate中工作

rom*_*rav 6 java hibernate transient

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

@Transient
private String ldapIdTemp;
Run Code Online (Sandbox Code Playgroud)

包是

import javax.persistence.Transient;
Run Code Online (Sandbox Code Playgroud)

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

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

我不确定我做错了什么.

Arp*_*wal 9

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

private String ldapIdTemp;

 @Transient
 public String getLdapIdTemp() {
    return ldapIdTemp;
 }

 public void setLdapIdTemp(String ldapIdTemp) {
    this.ldapIdTemp = ldapIdTemp;
 }
Run Code Online (Sandbox Code Playgroud)


MWi*_*ner 5

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

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

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

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

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

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