我认为 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;
}
为什么会出现这种情况?!
JPA将使用all类的属性,除非您特别标记它们@Transient
:
@Transient
private String agencyName;
The @Column
注释纯粹是可选的,可以让您覆盖自动生成的列名称。此外,length
的属性@Column
仅在自动生成表定义时使用,对运行时没有影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)