【发布时间】:2015-12-30 09:47:26
【问题描述】:
我正在尝试在同一类中映射父子关系:
public class Category {
@Id
@SequenceGenerator(name = "categorySeq", sequenceName = "category_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "categorySeq")
@Column(name = "category_id", nullable = false)
private Long id;
@Column(name = "code", nullable = true)
private String code;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "parent_id", nullable = true)
private Long parentId;
@ManyToOne
@JoinColumn(name = "parent_id", insertable = false, updatable = false)
public Category parentCategory;
@OneToMany(mappedBy = "parentCategory", cascade = CascadeType.ALL)
public List<Category> subCategories = new ArrayList<Category>();
}
当我对类别执行 GET 时,我只会得到 parentCategory,而 subCategories 显示为 null。我希望在 GET 上返回父条目和子条目。有什么想法吗?
【问题讨论】:
-
嗯?您定义了一个序列生成器,然后定义为使用 IDENTITY 策略(而不是 SEQUENCE)。没有意义。完全没有。 IDENTITY 是使用“AUTOINCREMENT”而不是序列
-
哦,是的,它应该是 SEQUENCE。谢谢。
-
为什么将 parent_id 映射为基本映射和关系?由于您已将关系标记为有效只读,当您添加父级时,您是否也将子级添加到父级的子类别列表中?我建议您切换它,以便 parentId 是只读的,并且从关系中设置 parent_id 以便 JPA 可以在检索父级的序列值时为您设置字段,并验证您正在设置此双向关系的双方.
-
感谢克里斯指出。
标签: jpa orm mapping parent-child