我有一个包含多个属性的对象。我的对象的一个属性是包含ArrayList的另一个对象。层次结构如下。
Object - Organization
(
String orgId
String orgName
String parentOrgName
Organization.Workers workers //Object of Worker list...
)
我想将组织对象存储在imdb(在内存数据库中)中。我正在使用Hibernate会话进行数据库连接。
我已经将Worker对象设置为Transient,就像这样。
@Transient
protected Organization.Workers workers;
当我检索Organization时,每次将此worker对象设为null时。请指导我使用@transient注释,并告诉我如何使用java spring中的hibernate会话在imdb中存储嵌套对象。
答案 0 :(得分:3)
@Transient
注释用于告诉JPA不要在数据库中存储字段。此外,无论何时处理作文,都要弄清楚它们之间的关系。
在上面的示例中,关系似乎是一对多关系,因为一个组织可以拥有多个工作人员,但一个工作人员一次只能在一个组织中工作。
您必须使用@OneToMany
注释告诉JPA这种关系。
查看Hibernate的official link如何使用它。
答案 1 :(得分:1)
当您需要特定字段用于某些工作但不希望该字段存储在数据库中时,将使用@Transient注释。
这里提出了你的问题,有组织和工人,所以关系是@OneToMany关系。
在组织类:
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="organization")
private List<Workers> workers = new ArrayList<>();
在工人阶级:
@ManyToOne
@JoinColumn(name="id", unique=true)
private Organization organization;
在这里,1个组织可以拥有许多工人,而一个工人只能在1个组织上工作。你有它。 :d