Spring Hibernate使用主键在表上创建自关系
我有一集Spring Hibernate使用主键在表上创建自关系,spring,postgresql,hibernate,jpa,Spring,Postgresql,Hibernate,Jpa,我有一集 @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 = f
@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;
网络卡通
@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;
当我启动我的应用程序时,我注意到Hibernate使用id创建了一个外键。这怎么可能呢?
生成的代码如下所示。此约束约束fkae0gia7g5anc7p031c00mdf7x外键(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
)
在hibernate配置中将
hibernate.hbm2ddl.auto
值设置为none
有关详细信息,请参阅《Hibernate用户指南》中的。在添加Hibernate.hbm2ddl.auto=non之后,我仍然存在相同的问题
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
)