Java Hibernate创建了一个自动中断约束

Java Hibernate创建了一个自动中断约束,java,hibernate,jpa,Java,Hibernate,Jpa,所以我有三个班,分类,问题和评论。 这两个类都与Comment有OneToMany关系 出于某种原因,Hibernate决定对注释设置约束,导致以下异常: ERROR: insert or update on table "comment" violates foreign key constraint "fknapu44p12w4v7wreaog7vgc80" Detail: Key (q_comment)=(03f7ed17-4fa1-48d9-ac17-9842e233fde4) is n

所以我有三个班,
分类
问题
评论
。 这两个类都与
Comment
OneToMany
关系

出于某种原因,Hibernate决定对
注释设置约束,导致以下异常:

ERROR: insert or update on table "comment" violates foreign key constraint "fknapu44p12w4v7wreaog7vgc80"
Detail: Key (q_comment)=(03f7ed17-4fa1-48d9-ac17-9842e233fde4) is not present in table "category".
问题
类别
都必须包含以下代码位:

@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name = "t_comment")
@LazyCollection(LazyCollectionOption.FALSE)
private List<Comment> comment;

正如它所说,它违反了外键约束。所以我假设您在该表上添加了外键约束。您能提供用于创建这些表的sql代码吗?当然可以。问题是它是由hibernate本身创建的。但给我一秒钟,我会拿出它使用的sql,然后你才能解决这个问题?是的,当你考虑它的时候,它是有意义的。使用一对多,它必须创建一个从
注释
到其他注释的约束,因为它是保存联接列的约束。它当然会中断,因为您只能对一个表进行约束。但将其更改为一个
manytomy
关系解决了这个问题
create table category (id varchar(255) not null, color varchar(7), name varchar(255), parent_questionnaire varchar(255), primary key (id))
create table comment (id varchar(255) not null, comment varchar(2048), timestamp int8, sent_by varchar(255), session varchar(255), t_recommendation varchar(255), t_comment varchar(255), primary key (id))
create table question (id varchar(255) not null, question varchar(255), type int4, parent_category varchar(255), primary key (id))
alter table if exists comment add constraint FKnapu44p12w4v7wreaog7vgc80 foreign key (t_comment) references category