spring-data-jpa 主键同时也是外键的表的组合键?

rjjhvcjd  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(138)

我有表item_image:

create table item_image
(
    item_id bigint        not null
        constraint item_image_pk
            primary key
        constraint item_image_item_fk
            references item,
    location  varchar(1000) not null,
    path      varchar(1000) not null,
    file_name varchar(200)  not null
);

并将其Map为实体:

@Entity
@Table(name = "item_image", schema = "public")
public class ItemImageEntity implements Serializable {

    @Id
    @OneToOne
    @JoinColumn(name = "item_id")
    private ItemEntity item;

    private String location;
    private String path;
    private String fileName;

    // getters and setters
}

我的项目实体具有:

@OneToOne(mappedBy = "item")
private ItemImageEntity profileImage;

在该表中,postgress表不包含对该item_image的引用,反之亦然。
当我尝试运行应用程序时,我得到:
@启用在JpaRepositoriesRegistrator上声明的JpaRepositories。启用JpaRepositoriesConfiguration:调用init方法失败;嵌套的异常是java.lang.IllegalArgumentException:此类[ItemImageEntity]未定义标识类
为什么我需要定义IdClass和How?因为我只有一个主键。
感谢您的帮助!

wwwo4jvm

wwwo4jvm1#

1.问题是你想添加实体的主键而没有真实的的主键,Hibernate无法识别itemEntity。(你有item_id字段吗?)

  1. About @IdClass - Hibernate不能将类标识为字段,并认为可以使用内部字段作为主键。

相关问题