Есть 3 класса. Класс Гость
@Proxy(lazy = false)
@Entity
@Table(name = "guest")
public class Guest extends HotelEntity {
@Basic
@Column(name = "name")
private String name;
@Basic
@Column(name = "surname")
private String surname;
@OneToMany( cascade = {CascadeType.ALL})
private List<GuestRoomInfo> guestRoomInfoList ;
@OneToMany( cascade = {CascadeType.ALL})
private List<GuestServiceInfo> guestServiceInfoList ;
public Guest( String name, String surName) {
this.name = name;
this.surname = surName;
}
public Guest(){}
GETTERS,SETTERS
}
Класс Комната
@Entity
@Table(name = "room")
public class Room extends HotelEntity implements Serializable{
@Basic
@Column(name = "number")
private Integer number;
@Basic
@Column(name = "cost")
private Integer cost;
@Basic
@Column(name = "capacity")
private Integer capacity;
@Basic
@Column(name = "stars")
private Integer stars;
@Enumerated(EnumType.ORDINAL)
private RoomStatus status;
public Room (Integer number, Integer cost, Integer capacity, Integer stars) {
this.number = number;
this.cost = cost;
this.capacity = capacity;
this.stars = stars;
this.status=RoomStatus.FREE;
}
public Room(){}
getters,setters...
}
И класс, где хранится инфа о госте и комнате
@Entity
@Table(name = "guestroominfo")
public class GuestRoomInfo extends HotelEntity {
@OneToOne
@JoinColumn(name="guest")
private Guest guest;
@OneToOne
@JoinColumn(name="room")
private Room room;
public GuestRoomInfo(Guest guest, Room room, Date arrivaldate, Date departuredate, Boolean isStillLiving) {
this.guest=guest;
this.room=room;
}
public GuestRoomInfo(){}
getters,setters...
}
Лишние методы выкинул для простоты. Не получается каскадное удаление. По идее< при удалении гостя должна удаляться и guestroominfo.
Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`hotel7`.`guestroominfo`, CONSTRAINT `FK1AD7D5E128946912` FOREIGN KEY (`guest`) REFERENCES `guest` (`id`))
Нужно добавить cascade = CascadeType.ALL
к аннотации @OneToOne
в классе guestroominfo
:
@Entity
@Table(name = "guestroominfo")
public class GuestRoomInfo extends HotelEntity {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "guest")
private Guest guest;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "room")
private Room room;
public GuestRoomInfo(Guest guest, Room room, Date arrivaldate, Date
departuredate, Boolean isStillLiving) {
this.guest = guest;
this.room = room;
}
}
и еще нужно добавить аннотацию @Cascade
в классе guest
:
@OneToMany(cascade = {CascadeType.ALL})
@Cascade(CascadeType.DELETE)
private List<GuestRoomInfo> guestRoomInfoList;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно ли удалить объект, из хипа, в Java, на который еще есть ссылки? В документации не нашел, можно ли это сделать или нетМне кажется что нет
Не могу отправить транзакцию биткойн кеш , пожалуйста помогите
Условно, таймер работает с задержкой 5 секунд: Как описать событие, происходящее в середине ожидания, чтобы ожидание заканчивалось и сразу...
Как найти высоту контейнера anchorPane 2 или от начала Stage и до anchorPane 2 (включительно), если нам был передан в метод только ComboBox? На картине я описал...