我对Hibernate相对来说比较新。Hibernate JPA:如何在获取父对象时获取子对象;但只坚持父对象
的问题是如何当父对象是取取两子对象和父对象;然而在持续时间期间,只能坚持子对象。
顺便提一下,外键不在数据库级别相关联。
与下面的代码Scenario1:
Criteria criteria = getCriteria(ParentObject.java);
criteria.add(Restrictions.eq("internalId", 123);
Collection result = new LinkedHashSet(criteria.list());
List<ParentObject> resultSet = new ArrayList<>(result);
for(ParentObject parentObj : resultSet) {
parentObj.getChildObjects() --> Getting all associated Child Objects.
}
然而
-------------------
ParentObject.java
-------------------
private Integer internalId;
private Set<ChildObject> childObjects = new HashSet<>(0);
private Integer userId;
//associated Setters as well.
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "InternalId", unique = true, nullable = false)
public Integer getInternalId() {
return this.internalId;
}
@OneToMany(fetch = FetchType.EAGER, mappedBy = "parentObject")
public Set<ChildObject> getChildObjects() {
return childObjects;
}
-------------------
ChildObject.java
-------------------
private Integer internalRecordId;
private Integer userId;
private ParentObject parentObject;
// associated setters and remaining getters.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", nullable = true)
public ParentObject getParentObject() {
return parentObject;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "InternalId", unique = true, nullable = false)
public Integer getInternalId() {
return this.internalId;
}
工作正常,如果想坚持只子对象失败。
ChildObject childObj = new ChildObject();
childObj.setUserId(123456);
getSession().save(childObj);
我明白,它需要一个父对象为参照,但由于业务流程可能不需要父对象和空parentObject行应在DB,这个问题如何解决不持久?
谢谢你的建议! –
@SrinivasLakshman如果帮助你,请将答案标记为“已接受”。 – yntelectual