0
需要在同一张表之间建立关系。示例:对象“类别”具有子类别,子类别具有其他子类别。如何在JPA中创建同一个表的关系?
在MySQL中创建一列并指向同一表的主键,但是,如何在JPA中创建?
我的代码是:
@Entity
@Table(name = "objects")
public class JObject {
private long id;
private String name;
private JObject parentJObject;
private Set<JObject> jObjects;
public JObject(){
}
public JObject(long id){
this.id = id;
}
public JObject(String name){
this.name = name;
}
public JObject(String name, JObject parentJObject){
this.name = name;
this.parentJObject = parentJObject;
}
@Null
@JoinColumn(name="parent_object_id", referencedColumnName="id")
@ManyToOne(cascade=CascadeType.ALL)
public JObject getParentJObject() {
return parentJObject;
}
public void setParentJObject(JObject parentJObject) {
this.parentJObject = parentJObject;
}
@Null
@OneToMany(mappedBy = "parentJObject", cascade = CascadeType.ALL)
public Set<JObject> getJObjects() {
return jObjects;
}
public void setJObjects(Set<JObject> jObjects) {
this.jObjects = jObjects;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@NotNull
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
而且使物体:
JObject jObjectcategories = new JObject("Demo 1");
Set categoriesJObjects = new HashSet<JObject>(){{
add(new JObject("Demo 1.1", jObjectcategories));
}};
jObjectcategories.setJObjects(categoriesJObjects);
jObjectDao.save(new HashSet<JObject>() {{
add(jObjectcategories);
}});
,但不工作。日志说:
违反约束的列表:[{ConstraintViolationImpl = interpolatedMessage '它必须是空',的PropertyPath = JObjects,rootBeanClass = A类abcmodels.JObject,messageTemplate ='{javax.validation.constraints。 }}
谢谢,我设置了变量的注释,而不是函数。工作正常。 –
工作正常,但不保存关系。我发现这个:https://hellokoding.com/jpa-one-to-many-relationship-mapping-example-with-spring-boot-maven-and-mysql/ y尝试将这些函数迁移到一个唯一的对象,但不作品。更新了主帖。 –