我的Spring项目中有这个类User
@Entity
public class User extends TimeStampModel{
// Extends TimeStampModel so we know when the user was created
@Id
@GeneratedValue
@Column
private long id;
@Column
private String username;
@Column
private String password;
@Column
private long amountOfLikes;
@Column
private long amountOfDislikes;
@OneToMany
private List<Comment> comments;
public User(){}
//getters and setters omitted
}
但我得到一个错误:Caused by: org.postgresql.util.PSQLException: ERROR: relation "comment" does not exist
以及许多其他错误。我的所有其他表都被正确创建。
我到底做错了什么?
这是我的评论类,Likeable是一个抽象类,它有numberOfLikes和numberOfDislikes的列。
@Entity
public class Comment extends Likeable {
@Id
@Column
@GeneratedValue
private long id;
@Column(nullable = false)
@Lob
private String text;
@OneToOne
private User author;
@OneToMany(cascade = CascadeType.ALL)
private List<Comment> childComments;
public Comment(){}
//getters and setters omitted
}
如果需要,这里还有Likeable抽象类
@MappedSuperclass
public abstract class Likeable extends TimeStampModel{
@Column
private int likeAmount;
@Column
private int dislikeAmount;
public void increaseLikeAmount(){
this.likeAmount++;
}
public void increaseDislikeAmount(){
this.dislikeAmount--;
}
//getters and setters omitted
}
这里是我的www.example.com也application.properties also
spring.jpa.database=POSTGRESQL
spring.datasource.url=jdbc:postgresql://localhost:5432/Test
spring.datasource.username=user
spring.datasource.password=pass
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
4条答案
按热度按时间z9ju0rcb1#
用户在PostgreSQL中是一个保留字,将其更改为其他内容可以修复所有问题。
rt4zxlrg2#
在用户实体中,您正在与注解建立
@OneToMany
关系,但在注解实体中,它是@OneToOne.
,请将其更改为@ManyToOne.
qxsslcnc3#
我在你的代码中发现了一些问题。a)你的Map不正确。在用户中你有一对多的Map和注解,而在注解中你有一对一的Map和用户。这需要修正。b)请尝试在用户和注解类的顶部使用@Table来重命名你的表名,因为用户是一个关键字。没有它将无法工作。
您可能还希望使用具有双向Map的mappedby属性来防止不必要的列。
zlwx9yxi4#
您是否设置了hbm2ddl.auto来创建表,您可能还需要为实体类添加Map。