Как создать сопоставление Hibernate для следующего сценария. У меня есть три стола, Users
, Systems
и System Assign
. Существует три типа пользователей: обычный пользователь, суперпользователь и администратор.Как создать сопоставление Hibernate для следующего сценария
Users
Таблица содержит пять столбцов - идентификатор пользователя, имя пользователя, пароль, идентификатор электронной почты и пользовательский тип. userType будет определять, является ли пользователь суперпользователем или администратором или обычным пользователем.
Systems
таблица есть столбец, но наиболее важным является systemsID
, который будет использоваться для сопоставления.
Я создал одну таблицу System Assign
, чтобы назначить систему пользователю с двумя идентификаторами пользователя и системным_имя (или при необходимости можно исправить). Также создаются эти два в качестве внешнего ключа соответствующей таблицы.
Условия отображения являются:
- пользователь может иметь один или более системный идентификатор на его имя.
- идентификатор системы может быть назначен одному или нескольким пользователям.
- , когда запись system_assign удаляется из пользовательского интерфейса, она должна разорвать связь между пользователем и системой, но пользователь и система должны находиться в базе данных.
Также я должен внести некоторые изменения в базе данных, как это:
- Если супер пользователь создает пользователь, этот пользователь будет находиться под ним
- если супер пользователь создает систему, система будет быть под ним.
- Если пользователь удален, тогда система должна находиться под суперпользователем.
Мне нужно знать, как создать классы Hibernate для этого Senario
@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;
}
}
можно использовать на спящем стороне. но как управлять на стороне базы данных для этой ситуации. Я могу сделать все необходимые изменения кода, просто хочу запустить это приложение. – shrish
Я пробовал создать класс для system_assign, давая однотавровое отображение, но получая ошибку при сохранении объекта как ORA-01722: недопустимый номер. Я также поделюсь своим классом – shrish
Я вставил класс – shrish