Hibernate 休眠保存对象问题
我有以下课程:Hibernate 休眠保存对象问题,hibernate,Hibernate,我有以下课程: @Entity @Table(name = "branch", uniqueConstraints = {@UniqueConstraint(columnNames = {"bname", "branch_fk"})}) public class BranchEntity implements Serializable { @Id @GeneratedValue private int id; @Column(name = "username",
@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
@实体
@表(name=“branch”,uniqueConstraints={@UniqueConstraint(columnNames={“bname”,“branch_fk”})})
公共类BranchEntity实现了可序列化{
@身份证
@生成值
私有int-id;
@列(name=“username”,长度=64,可空=false)
私有字符串用户名;
@列(name=“bname”,长度=64)
私有字符串分支名称;
@列(name=“studcount”)
私人国际学生人数;
@列(name=“blevel”,columnDefinition=“int default 0”)
私有整数级;
@列(name=“已确认”,columnDefinition=“tinyint默认值0”)
私人int确认;
@OneToMany(mappedBy=“branch”,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@OnDelete(action=OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE\u孤儿)
私有集branchbuilding=newHashSet();
@OneToMany(mappedBy=“branch”,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@OnDelete(action=OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE\u孤儿)
私有集picture=newhashset();
@OneTONE(mappedBy=“branch”,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@OnDelete(action=OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE\u孤儿)
私有登录;
@OneToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name=“human_fk”,nullable=true)
私人人性实体人性;
//一些二传手和接球手
正如你们所看到的,这些表格与人文性、图画性和……表格有关。
在我的域层中,我有一个分支类,它依赖于分支表及其所有关系。
当域传递一个分支对象,我想更改数据库中的分支时,我遇到了一些问题,请在下面解释。
在人类类的域层中,我没有标识符(主键),当我想要保存或更新(branchEntity)时,我必须设置所有属性,但当我想要设置branchEntity.setHumanEntity时,我必须再次查询并从数据库中获取标识符,设置为humanEntity,然后设置branchEntity.setHumanEntity。
我想知道这是对的?还是我做错了什么?我必须在域层的人类类中保留HumanEntity标识符吗?
事实上,我不知道在保存或保存或更新或…以及与其他对象相关的对象时会发生什么情况?我必须如何处理该对象?您的问题不容易理解;如果我有误解,请道歉。为什么您的HumanEntity在域层中没有标识符?我可以看到您的分支名称是“id”也就是说,我想知道,如果我必须在我的类Human in Domain中有HumanENtity Id,那么我重构代码并添加它,但从逻辑上讲,我不需要在我的域层中使用该标识符