Spring Data JPA无法确定属于同一类对象的属性的类型
问题描述:
我有一个TestEntity,并且此实体可以具有父TestEntity。 Spring数据JPA说无法确定类型:abc.entity.TestEntity,在表:test_entity,为列:[org.hibernate.mapping.Column(parent)],我该如何解决这个问题?没有在互联网上找到任何东西,或者我搜索了错误的东西。Spring Data JPA无法确定属于同一类对象的属性的类型
package abc.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class TestEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private TestEntity parent;
public TestEntity(String name, TestEntity parent) {
this.name = name;
this.parent = parent;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public TestEntity getParent() {
return parent;
}
}
答
好像你已经得到多个TestEntity
类与一个包abc.entity.TestEntity
和其他与tud.swt16w2.entity
包。
所以import
正确的实体类,即import tud.swt16w2.entity.TestEntity
为您的存储库类进口的一部分。
答
在父母字段上使用@ManyToOne
和@JoinColumn(name = "parent_id")
。
答
这不是Spring Data JPA抱怨,而是Hibernate,底层OR映射器。如果您建模与实体的关系(无论它是相同类型还是不同实体),您需要确定关系的基数,即或者用@OneToOne
或@ManyToOne
对其进行注释,具体取决于您希望实现哪种语义。
答
您必须将@OneToOne
或@ManyToOne
放在parent
上。
此外,您应提供无参数构造函数。
顺便说一下,它不是弹簧数据,但JPA提供商谁给你的错误。
答案不,我不是,我只是错误地编辑的计算器包名。我修好了,谢谢! – phip1611