hes*_*ese 188 java hibernate jpa
我认为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.
}
Run Code Online (Sandbox Code Playgroud)
仅供参考...我在另一个具有多对多映射的类中使用上面的类
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name="user_team",
joinColumns = { @JoinColumn( name="user_id") },
inverseJoinColumns = @JoinColumn( name="team_id")
)
public Set<Team> getTeams() {
return teams;
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?!
ska*_*man 397
JPA将使用该类的所有属性,除非您特别标记它们@Transient
:
@Transient
private String agencyName;
Run Code Online (Sandbox Code Playgroud)
该@Column
注释纯粹是可选的,并且是有让你忽略自动生成的列名.此外,length
属性@Column
仅在自动生成表定义时使用,它对运行时没有影响.
Cod*_*Med 82
对于通过搜索引擎发现此帖子的人来说,导致此问题的另一个可能原因是导入错误的软件包版本@Transient
.确保您导入javax.persistence.transient
而不是其他包.
Sau*_*raj 27
放置@Transient
在吸气与私人领域为我工作.
private String name;
@Transient
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
153368 次 |
最近记录: |