在Ebean中创建嵌套对象的最简单方法是什么?

5
我需要两个 Ebean 模型类,分别叫做“States”和“Children”。一个“State”对象可以包含嵌套的 Child 对象(一组 children 列表)。
以下是基本的 States 类:
@Entity
public class States extends Model {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Constraints.Required(message = "stateName cannot be null")
    @Column(nullable = false)
    private String statename;

    @Column(nullable = true)
    private String url;

    @Column(nullable = true)
    private String parent;

    private List<Children> childrenList;
}

这是基本的Children类:
@Entity
public class Children extends Model {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(nullable = false)
    private String statename;

    @Column
    private String child;
}

这些类需要进行哪些最小的修改才能使用 Ebean ORM 创建状态对象?我阅读了这篇文章:Ebean Query by OneToMany Relationship,但是里面建议做了很多更改,我只想要最小的修改。
1个回答

5

我只需要对“States”类进行小修改即可。

@Entity
public class States extends Model {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Constraints.Required(message = "stateName cannot be null")
    @Column(nullable = false)
    private String statename;

    @Column(nullable = true)
    private String url;

    @Column(nullable = true)
    private String parent;

    @OneToMany(cascade = CascadeType.ALL)
    private List<Children> childrenList;
}

我在这里做的唯一更改是:

@OneToMany(cascade = CascadeType.ALL)

我没有对"Children"类做任何更改。在启动play应用程序之前,我在"application.conf"文件中设置了

play.evolutions.enabled = true

然后使用在"evolution.default"文件夹中创建的进化SQL文件,我调整了数据库的模式。之后,“States”对象成功地创建,并包含嵌套的“Children”对象。


1
从技术上讲,使用Ebean时您不需要... @GeneratedValue(strategy = GenerationType.IDENTITY)... 我个人会将其省略,并让Ebean选择适当的标识机制来用于给定的DB平台。 - Rob Bygrave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接