【发布时间】:2016-10-06 22:38:51
【问题描述】:
如何为以下场景创建 Hibernate 映射。
我有三张桌子,Users、Systems 和 System Assign。
用户分为三种类型——普通用户、超级用户和管理员。
Users 表有五列——user-ID、userName、password、email id 和 userType。 userType 将决定用户是超级用户、管理员还是普通用户。
Systems 表有一些列,但最重要的是systemsID,它将用于映射。
我创建了一个表System Assign 来将系统分配给具有两列user-ID 和system_id 的用户(或者如果需要可以更正)。还创建了这两个作为各自表的外键。
映射的条件是:
- 用户的名字可以有一个或多个系统 ID。
- 可以将系统 ID 分配给一个或多个用户。
- 当从 UI 中删除 system_assign 记录时,它只会断开用户和系统之间的链接,但用户和系统应该在数据库中。
我还必须像这样进行一些数据库更改:
- 如果一个超级用户创建了一个用户,这个用户就会在他的下面
- 如果超级用户创建一个系统,系统将在他之下。
- 如果用户被删除,那么系统现在应该属于超级用户。
我需要知道如何为这个场景创建休眠类
@Entity
@Table(name = "SYSTEM_ASSIGN")
public class SAssign implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1945028654484806943L;
@Id
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "USERSSO")
private Users user;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "SYSTEMID")
private Systems system;
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
public Systems getSystem() {
return system;
}
public void setSystem(Systems system) {
this.system = system;
}
}
【问题讨论】:
-
我可以在休眠端使用。但是对于这种情况如何在数据库端进行管理。我可以做任何需要的代码更改,只想运行这个应用程序
-
我尝试为 system_assign 创建一个类,提供 oneToOne 映射,但在将对象另存为 ORA-01722:无效编号时出错。我也会分享我的课程
-
我已经粘贴了课程
-
当然,举个例子我会照着写代码。
-
我认为您需要在
SAssign中使用@ManyToOne而不是@OneToOne。