我使用Spring 3.2和hibernate-core 4.1.4以及hibernate-jpa-2.0.1。應用程序資源文件具有所有正確的對象。使用Hibernate插入子對象不會返回完整對象
我有一個子對象RoleEntity,它有兩個父母:User和Award,所以userId和awardId是已存在的外鍵,並且必須存在才能創建角色實體。
public class RoleEntity implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "role_id")
private long roleId;
@Column(name = "role_description")
private String roleDescription;
@Column(name = "role_name")
private String roleName;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private UserEntity user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "award_id")
private AwardEntity award;
... getters/setters
... hash/equals/toString
}
吾道插入看上去很簡單:
@Override
public RoleEntity saveRoleEntity(RoleEntity role)
{
logger.debug("saveRoleEntity: role=" + role);
return role;
}
我有單元測試此代碼,我可以確認的是,當我選擇一個現有的角色ID,我完全可以拿回加載的對象,與用戶和獎項完全填充。
然而,當我插入新的角色,我做到以下幾點:
- 集角色ID爲0,角色介紹...
- 創建userEntity,只有已設定的ID,這個ID存在,是不是新的
- 創建awardEntity,只設置ID,這個ID已經存在,並不是新
我可以成功地做了保存,這是偉大!!!!適用於我。 而在新對象返回中,我可以清楚地看到新角色Id返回給我了! RoleEntity的所有其他字段,如描述,在那裏。
但是,我還需要的是RoleEntity的User和Award字段被完全填充,就好像我在插入後做了select一樣。這甚至有可能嗎?
我寧願不做一個選擇給用戶和獎表獲得這些對象,然後將它們分配給這個對象,但如果我必須這樣做,那很好。
如果我需要提供更多信息,請告訴我。 感謝您提前提供任何幫助。
謝謝!這非常有幫助,並解決了我的問題! – tjholmes66