我有這些類:休眠保存對象問題
@Entity
@Table(name = "branch", uniqueConstraints = {@UniqueConstraint(columnNames = {"bname", "branch_fk"})})
public class BranchEntity implements Serializable {
@Id
@GeneratedValue
private int id;
@Column(name = "username", length = 64, nullable = false)
private String userName;
@Column(name = "bname", length = 64)
private String branchName;
@Column(name = "studcount")
private int studCount;
@Column(name = "blevel", columnDefinition = "int default 0")
private int level;
@Column(name = "confirmed", columnDefinition = "tinyint default 0")
private int confirmed;
@OneToMany(mappedBy = "branch", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<BranchBuildingEntity> branchbuilding = new HashSet<BranchBuildingEntity>();
@OneToMany(mappedBy = "branch", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<PictureEntity> picture = new HashSet<PictureEntity>();
@OneToOne(mappedBy = "branch", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private LoginEntity login;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "human_fk", nullable = true)
private HumanEntity human;
//some setter and getter
正如你可以看到這些表有HumnEntity和PictureEntity和關係...表。 在我的領域層我有Branch類依賴於分支表和所有它的關係。 當域傳遞分支對象,我想更改數據庫中的分支我有一些問題,下面解釋。 在人類中的域層我沒有標識符(主鍵),那麼當我想要SaveOrUpdate(branchEntity)時,我必須設置所有的屬性,但是當我想設置branchEntity.setHumanEntity時,我必須再次查詢並從數據庫獲取標識符,並設置爲然後humanEntity設置branchEntity.setHumanEntity。 我想知道那是對的?或者我錯了一些地方?我是否必須在「我的人類」類中的域層中保留HumanEntity標識符? 事實上,我不知道保存或SaveOrUpdate或Update或...以及與其他對象有關係的對象時究竟發生了什麼?我該如何處理這個對象?
你的問題不容易遵循;如果我誤解了道歉。爲什麼您的HumanEntity沒有在域圖層中有標識符?我可以看到你的BranchEntity確實是「id」。 – 2009-07-22 18:59:36
這就是我想知道的,如果我必須有我的類中的HumanENtity Id在域中的人類然後我重構我的代碼並添加它但Logicaly我不需要該標識符在我的域層 – Am1rr3zA 2009-07-22 19:39:49