让hibernate忽略未映射的类variables
我以为hibernate只考虑用@Column注解的类variables。 但奇怪的是,今天当我添加一个variables(即没有映射到任何列,只是一个variables,我需要在类中),它试图将该variables包含在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; } 
为什么会发生这种情况?
  JPA将使用该类的所有属性,除非您使用@Transient特别标记它们: 
 @Transient private String agencyName; 
  @Column注释纯粹是可选的,可以覆盖自动生成的列名。 此外, @Column的length属性仅在自动生成表定义时使用,对运行时没有影响。 
 对于通过search引擎发现这个post的人来说,导致这个问题的另一个可能原因是导入错误的@Transient包版本。 确保您导入javax.persistence.transient而不是其他包。 
 放置@Transient与私人领域的getter工作。 
 private String name; @Transient public String getName() { return name; } public void setName(String name) { this.name = name; }