Java Hibernate:如何从实体构造函数参数生成Id?
如何使用构造函数参数为实体生成id-可能吗?我需要它使树结构(类别->子类别…)传递给构造函数父类别idJava Hibernate:如何从实体构造函数参数生成Id?,java,hibernate,orm,annotations,Java,Hibernate,Orm,Annotations,如何使用构造函数参数为实体生成id-可能吗?我需要它使树结构(类别->子类别…)传递给构造函数父类别id Category category = new Category(parentId); CategoryDAO.add(category); 一个想法是使用Hibernate中的“id”“生成器”。 请参见此处的文档: 看看您的用例,“分配的”或“类”生成器似乎很合适这并不能直接回答您的问题,但是,除非我误解了您的需求,否则您实际想要的是对自引用关联进行建模,类似这样: @Entity
Category category = new Category(parentId);
CategoryDAO.add(category);
一个想法是使用Hibernate中的“id”“生成器”。
请参见此处的文档:
看看您的用例,“分配的”或“类”生成器似乎很合适这并不能直接回答您的问题,但是,除非我误解了您的需求,否则您实际想要的是对自引用关联进行建模,类似这样:
@Entity
public class Category {
@Id @GeneratedValue
private Long id;
private String name;
@ManyToOne(optional=true)
private Category parent;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private Set<Categories> subCategories;
// ...
public void addToSubCategories(Category category) {
category.setParent(this);
this.subCategories.add(category);
}
}
@实体
公共类类别{
@Id@GeneratedValue
私人长id;
私有字符串名称;
@多通(可选=真)
私人类别家长;
@OneToMany(mappedBy=“parent”,cascade=CascadeType.ALL)
私有集子类别;
// ...
公共无效添加到子类别(类别){
类别。setParent(本);
此。子类别。添加(类别);
}
}
如果这不是您想要的,并且您不想使用生成的标识符,那么就不要使用
@GeneratedValue
注释并手动分配标识符(在构造函数中,使用setter,任何操作)。但我不明白你为什么需要这个