我遇到了Spring数据JPA(使用Hibernate,Postgre SQL和jdbc)的问题。 我有2个实体,Texte和Annotation以及2个存储库,TexteRepository和AnnotationRepository,它们扩展了CrudRepository。 注释与Texte有多对一的关系。在控制器中,我正在做这样的事情:
Annotation annotation = new Annotation();
Texte texte = texteRepository.findOne(id);
if(texte != null) {
annotation.setTexte(texte);
annotationRepository.save(annotation);
}
在执行此操作时,我遇到了ConstraintViolationException:
could not execute statement; SQL [n/a]; constraint [id_texte]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
我的理解是Hibernate不知道我的texte实体已经存在,所以它试图插入它。我来自.NET,但我要说的是texte并没有“附加”到与注释相同的数据库上下文。
以下是我的实体声明(我只向您展示相关属性):
@Entity
@Getter
@Setter
public class Texte {
@Id
@GeneratedValue
private Long id;
...
}
@Entity
@Getter
@Setter
@Audited
public class Annotation {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
private Texte texte;
...
}
非常感谢
克莱门特
答案 0 :(得分:0)
在注释类中,Texte的映射不正确,您需要定义链接两个表的列(即外键)