lipingping951462
萍心nice
采纳率33.3%
2017-11-20 06:28 阅读 639

hibernate根据@id的位置不同会出现不同的错误

public class SsoProject implements Serializable{

@Id
@GenericGenerator(name = "idGenerator", strategy = "increment")
@GeneratedValue(generator = "idGenerator")
private Long id;
private User checkuser;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "check_id")
@JsonIgnore
@NotFound(action=NotFoundAction.IGNORE)
public User getCheckuser() {
return checkuser;
}
public void setCheckuser(User checkuser) {
this.checkuser = checkuser;
}
}

public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
如果以上生成主键的注释放在变量上则会将 checkuser 当成普通变量形成sql 语句
但是如果将 注解放在get 方法上则不会,具体是什么原因呢?
@Id
@GenericGenerator(name = "idGenerator", strategy = "increment")
@GeneratedValue(generator = "idGenerator")
public Long getId() {
return id;
}
试了下只有 @id 的情况,错误一致。为何@id 放在变量上会解析出错误的sql语句呢?

如果将@id 放到getId()方法上,则自定义
@Column(name = "bypassapprovalprompt")
private Boolean bypassApprovalPrompt=false;
又会将生成sql语句时又会生成bypass_approval_prompt 现象好奇怪呀!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • leuaner Leuan_7 2018-02-08 14:09

    新学,提点建议。我记得好像是hibernate的@id注解之类的最好方法相同情况上,即字段或者getter方法上,不然会执行错误。

    点赞 评论 复制链接分享

相关推荐