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
)