У меня есть эпизод с сущностью
@Id //The unique id.
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name= "title", unique = false, nullable = false)
private String title;
@Column(name= "description", unique = false, nullable = false)
private String description;
@Column(name= "price", unique = false, nullable = false)
private BigDecimal price;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
private Image icon;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
private Image episodeNexus;
private String repositoryGeneratedId;
@JsonIgnore
@ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn(name="webtoon_id")
Webtoon webtoon;
Webtoon
@Id //The unique id of the webtoon.
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name= "price", unique = false, nullable = false)
private BigDecimal price;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
private Image cover;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
private Image icon;
@Column(name= "title", unique = false, nullable = false)
private String title;
@Column(name= "author_name", unique = false, nullable = false)
private String authorName;
@Column(name= "description", unique = false, nullable = false)
private String description;
@Column(name= "language", unique = false, nullable = false)
private String language;
@Column(name= "company_id", unique = false, nullable = false)
private Long companyId;
@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy="webtoon", orphanRemoval = false)
@Column(name= "user_review", nullable = true)
private List<Review> userReview = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="webtoon", orphanRemoval = false)
@CollectionTable(name= "list_of_episodes")
@Fetch(value = FetchMode.SUBSELECT)
private List<Episode> listOfEpisodes = new ArrayList<>();
@OneToOne(fetch = FetchType.EAGER)
private Category category;
@OneToOne(fetch = FetchType.EAGER)
private SubCategory subCategory;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinColumn(name = "rating", unique=true, nullable=false)
private Rating rating = new Rating();
private String repositoryGeneratedId;
и изображение
@Id //The unique id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nexusId;
private String path;
private String name;
private String generatedUniqueId;
private Long size;
Когда я запускаю свое приложение, я замечаю, что Hibernate создает внешний ключ, используя идентификатор. Как это возможно ? Сгенерированный код ниже. Это ограничение CONSTRAINT fkae0gia7g5anc7p031c00mdf7x FOREIGN KEY (id)
не должно существовать.
CREATE TABLE public.episode
(
id bigint NOT NULL,
description character varying(255) COLLATE pg_catalog."default" NOT NULL,
price numeric(19,2) NOT NULL,
repository_generated_id character varying(255) COLLATE pg_catalog."default",
title character varying(255) COLLATE pg_catalog."default" NOT NULL,
episode_nexus_id bigint,
icon_id bigint,
webtoon_id bigint,
CONSTRAINT episode_pkey PRIMARY KEY (id),
CONSTRAINT fkae0gia7g5anc7p031c00mdf7x FOREIGN KEY (id)
REFERENCES public.episode (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION,
CONSTRAINT fkeom9w8fbdmqm8j9nkq5hqglia FOREIGN KEY (icon_id)
REFERENCES public.image (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION,
CONSTRAINT fksd2jfjxp5puq4cnp4renveldi FOREIGN KEY (episode_nexus_id)
REFERENCES public.image (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION,
CONSTRAINT fkthwbcsb0axcklmd5wfhr650b9 FOREIGN KEY (webtoon_id)
REFERENCES public.webtoon (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
WITH (
OIDS = FALSE
)