繁体   English   中英

休眠:如何从实体构造函数参数生成ID?

[英]Hibernate: How to generate Id from entity constructor parameters?

如何使用构造函数参数为实体生成ID-可以吗? 我需要使树结构(类别->子类别...)传递给构造函数的父类别ID。

Category category = new Category(parentId);
CategoryDAO.add(category);

一种想法是使用Hibernate的“ id”“ generators”。 在此处查看文档: http : //docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-id

查看您的用例,“ assigned”或“ class”生成器似乎很合适

这不会直接回答您的问题,但是除非我误解了您的要求,否则您真正想要的是对自引用关联进行建模,如下所示:

@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);
    }    
}

如果这不是您想要的,并且不想使用生成的标识符,则只需不要使用@GeneratedValue批注并手动分配标识符(在构造函数中,使用setter进行任何操作)。 但是我不明白为什么你需要这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM