Я постараюсь объяснить мою проблему, а я могу
У меня есть несколько групп пользователей для управления правами пользователей.
Некоторые пользователи могут быть клиентами. Существует соединение OneToOne между таблицей пользователей и таблицей клиентов. И соединение OneToOne между пользователями и группами. Когда я удаляю клиента, мне бы хотелось, чтобы группа пользователей менялась с клиента на пользователя, по умолчанию это группа (Id = 4).
С этим кодом:
public static void delete(Long id) {
Customer entity = Customer.findById(id);
User entityUser = User.findById(entity.user.id);
entity.delete();
entityUser.groups.id = (long)4;
entityUser.merge();
entityUser.save();
flash.success(Messages.get("Users.deleted"));
Customers.list();
}
Групповая модель:
@Entity
@Table(name = "groups")
public class Group extends Model{
@Required
public String name;
@Required
public String description;
public Group(String name, String description)
{
this.name = name;
this.description = description;
}
Модель пользователя:
@Entity
@Table(name = "users")
public class User extends Model{
@Required
public String firstname;
@Required
public String lastname;
@As("dd/MM/yyyy")
@Required
public Date birthday;
@Required
public String avatar;
@Required
public String adress;
@Required
public String phonenumber;
@Required
@Email
public String email;
@Required
public String username;
@Required
@Password
public String password;
@OneToOne
@Required
public Group groups;
public User(
String firstname,
String lastname,
@As("dd/MM/yyyy") Date birthday,
String avatar,
String adress,
String phonenumber,
String email,
String username,
String password,
Group groups
)
{
if(groups == null){
groups.id = (long)4;
}
else
{
this.groups = groups;
}
this.firstname = firstname;
this.lastname = lastname;
this.birthday = birthday;
this.avatar = avatar;
this.adress = adress;
this.phonenumber = phonenumber;
this.email = email;
this.username = username;
this.password = password;
}
Модель клиента:
@Entity
@Table(name = "customers")
public class Customer extends Model{
@As("dd/MM/yyyy")
public Date dateinscription;
public Double amountdue;
public Double amountpaid;
@Required
public String picture;
@OneToOne
public User user;
public Customer(@As("dd/MM/yyyy") Date dateinscription, Double amountdue, Doubleamountpaid, String picture, User user)
{
this.dateinscription = dateinscription;
this.amountdue = amountdue;
this.amountpaid = amountpaid;
this.picture = picture;
this.user = user;
}
}
Но у меня есть ошибка:
PersistenceException occured : org.hibernate.HibernateException: identifier of an instance of models.Group was altered from 3 to 4
В /app/controllers/Customers.java (около строки 69)
65:
66:
entityUser.groups.id = (long) 4;
67:
68:
entityUser.merge ();
69:
entityUser.save ();
70:
71:
flash.success (Messages.get ( "Users.deleted"));
72:
Customers.list ();
73:
74:
}
75:
Я пытался с GenericModel, но он не работал.
Пожалуйста, помогите мне !!
Спасибо.