gpt4 book ai didi

java - 映射中存在重复列,用于抛出没有重复列的实体异常

转载 作者:行者123 更新时间:2023-12-02 04:45:50 26 4
gpt4 key购买 nike

我有 2 个类,一个用 @MappedSuperclass 注释的抽象类和一个扩展该类的子类。当我运行我的程序时,出现以下错误:

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: models.Comment column: comment_id (should be mapped with insert="false" update="false")

但是我正在查看我的代码,没有看到任何重复的列名称。这是我第一次使用映射的 super 类注释,我不确定我是否做错了什么/使用注释。这是我的两个类(class):

@MappedSuperclass
public abstract class AbstractModel {

protected long id;

protected Date creationDate = new Date();

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}
@Temporal(TemporalType.TIMESTAMP)
public Date getCreationDate() {
return creationDate;
}
}

@Entity
@Table(name="comment")
@AttributeOverride(name = "id", column = @Column(name = "comment_id"))
public class Comment extends AbstractModel{

private User user;

private Post post;

private String content;
/*
* Getters and setters
*
*/
@Override
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public long getId(){
return id;
}
@ManyToOne
@JoinColumn(name="user_id")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@ManyToOne
@JoinColumn(name="post_id")
public Post getPost() {
return post;
}
public void setPost(Post post) {
this.post = post;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

对此的任何帮助将不胜感激

最佳答案

您定义了两次“id”属性。
将注释从 Comment 类的 getId() 方法移至 AbstractModel,并从 Comment 类中删除 getId() 方法。

当您使用属性访问时,您需要列的所有 setter 和 getter,AbstractModel 类中的 setCreationDate 缺失。

关于java - 映射中存在重复列,用于抛出没有重复列的实体异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com