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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问