У меня есть следующие классы:
//Product class
public class Product {
@Id
@GeneratedValue
private Long id;
private String name;
//Package Class
public class Package {
@Id
@GeneratedValue
private Long id;
@OneToOne(cascade=CascadeType.ALL)
private Product product;
private int quantity;
private char mode;
private String unity;
private String description;
@OneToOne(cascade=CascadeType.ALL)
private Usuario user;
public class User {
@Id
private String email;
Я могу вставить продукт, пользователя и пакет, просто делая:
//.. (iniatilize product and user before and set in package object)
session.save(package);
session.getTransaction().commit();
Так почему я не могу удалить пользователя?
User user = new User();
user.setEmail("valter@gmail.com");
session.delete(user);
session.getTransaction().commit();
Дает мне эту ошибку:
Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа
Что не так с моимклассы?
Законный пользователь сущности
@Entity
public class Usuario {
@Id
private String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
@Entity
public class Package{
@Id
@GeneratedValue
private Long id;
@OneToOne(cascade=CascadeType.ALL)
private Product product;
private int quantity;
private char mode;
private String unity;
private String description;
@OneToOne(cascade=CascadeType.ALL)
private User user;
@Entity
public class Product {
@Id
@GeneratedValue
private Long id;
private String name;
Это все сущности, вовлеченные в систему.
@ Божо На основании того, что выскажем, так и должно быть, верно?
@Entity
public class User{
@Id
private String email;
@OneToOne(cascade=CascadeType.ALL)
private List<Package> packages;
Я пытаюсь выполнить этот метод:
private static void deleteUser() {
Session session = new HibernateUtil().getSession();
session.beginTransaction();
try{
User usuario = (Usuario) session.load(Usuario.class, "valter@gmail.com");
session.delete(usuario);
session.getTransaction().commit();
}catch(HibernateException he){
session.getTransaction().rollback();
}finally{
session.close();
}
}