什么是用于referencedColumnName在JPA

什么是用于referencedColumnName在JPA,第1张

贴注解代码··怀疑你关联写错了,JPA里关联写的是数据库字段名·· @JoinColumn(name = "brand_id", referencedColumnName = "id") 这里name是本类(表)在数据库的字段名,referencedColumnName 是关联类(表)在数据库中的关联字段名

我最近使用springboot的时候也遇到跟你一样的问题

我的BaseModel

public class BaseModel implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "id")

private Long id

protected BaseModel(){

this.id = 1L

}

public Long getId() {

return id

}

public void setId(Long id) {

this.id = id

}

public boolean equals(Object other) {

if (other == null || other.getClass() != this.getClass())

return false

if(this.getId() == null || ((BaseModel) other).getId() == null) return false

return this.getId().equals(((BaseModel) other).getId())

}

public int hashCode() {

return new HashCodeBuilder().append(getId()).toHashCode()

}

}

这里的BaseModel是我的实体类的父类,我错误的原因是序列化没有重写好equals函数,因为动态生成sql语句的时候主键默认为null,无法识别这是不是一个新的对象(我的理解),所以重写的时候多了

if(this.getId() == null || ((BaseModel) other).getId() == null) return false

因为主键不为空,为null肯定不相等。我就这样解决了,不知道能不能帮到你了。

字段名称不能以数字开头。

数据库字段的命名必须遵循以下规则:

使用有意义的字段名。字段名称必须是易于理解并能表达字段功能的英文单词或缩写。单词的第一个字母必须大写,一般不超过三个英文单词。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10068100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存