我有这些类:休眠保存对象问题
@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