@Entity
@Getter
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_id")
private Long id;
private String name;
private Long depth;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent")
private Category parent;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "store_id")
private Store store;
@OneToMany(mappedBy = "parent")
private List<Category> children = new ArrayList<>();
public void addChild(Category child) {
children.add(child);
}
}
无法调用“java.util.List.add(Object)”,因为“this.children”为空
当我尝试parentCategory.addChild(childCategory)
时
我用一个空列表初始化了它,但是为什么会这样呢?
空列表是否为null?
我想知道初始化的正确方法。
1条答案
按热度按时间soat7uwm1#
我怀疑你正在使用构建器来构造Category的一个示例。在这样做的过程中,构建器用null覆盖了children集合,因为你没有在构建器链中传递它。
例如: