让 Hibernate 忽略未映射的实例变量

新手上路,请多包涵

我认为休眠只考虑用 @Column 注释的实例变量。但奇怪的是,今天当我添加一个变量(未映射到任何列,只是我在类中需要的一个变量)时,它试图将该变量作为列名包含在 select 语句中并引发错误 -

“字段列表”中的未知列“team1_.agencyName”

我的课 -

 @Entity
@Table(name="team")
public class Team extends BaseObject implements Serializable {

@Id  @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(length=50)
private String name;

@Column(length=10)
private String code;

@Column(name = "agency_id")
private Long agencyId;

private String agencyName; //note: not annotated.

}

仅供参考…我在另一个具有多对多映射的类中使用上述类

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
        name="user_team",
        joinColumns = { @JoinColumn( name="user_id") },
        inverseJoinColumns = @JoinColumn( name="team_id")
)
public Set<Team> getTeams() {
    return teams;
}

为什么会这样?!

原文由 hese 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 423
1 个回答

JPA 将使用该类的 所有 属性,除非您专门用 @Transient 标记它们:

 @Transient
private String agencyName;

@Column 注释完全是可选的,可以让您覆盖自动生成的列名。此外,—的 @Column length 属性仅在自动生成表定义时使用,它对运行时没有影响。

原文由 skaffman 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题