我有两个对象:项目和历史
以下是这些类的最小代码
项目
@Entity(name = "projects")
public class Project {
@Id
private String name;
@OneToMany(MappedBy = "project")
private List<History> histories;
}
记录
@Entity(name = "histories")
public class History {
@Id
private Integer id;
@ManyToOne
@JoinColum(name = "project_name")
private Project project;
}
我没有创建EntityManager和创建表的麻烦。一切都在这里,右边的列轻轻地等待插入数据。
但是,我不确定这是否是ORM的正确行为。
基本上如果它看起来像是理想的那样:
当我尝试执行这样的代码时,只有 projects 表中包含数据, history 表为空,这迫使我将代码编写为如下:< / p>
好的,这只是一行额外的代码,但如果我需要获取数据或将更多历史记录添加到一个项目,该怎么办? 如果是这样,我需要加载项目和所有相关历史记录,并将物理历史记录添加到项目对象...这样的代码很容易变得麻烦而且很难编写。
无论如何,这是任何ORM的正常行为还是我的ORM愚弄我?
注意:我正在使用带有SQLite驱动程序的ORMLite。
答案 0 :(得分:1)
我相信您正在观察的行为是默认行为,但您应该能够更改它并使默认情况下保留基础History
对象。在@OneToMany
中的Project
注释中,尝试将cascade
字段指定为cascade = CascadeType.PERSIST
(假设您正在使用javax.persistence.OneToMany
)。有关其他选项,请参阅documentation。