【问题标题】:@MappedSuperclass : Persistent entity should have primary key@MappedSuperclass : 持久实体应该有主键
【发布时间】:2021-10-05 18:32:34
【问题描述】:

我正在使用 Spring Data JPA,我正在尝试创建 4 个不同的实体,它们具有完全相同的字段,但它们将存储在 4 个不同的表中。

这是我的关键课程

public class IndexId implements Serializable {

    private int seqNo;
    private String index;

    // getters and setters
}

然后我有了基类:

@MappedSuperclass
public class BaseIndex {

    @Id
    @Column(name = "seq_no", nullable = false)
    protected int seqNo;

    @Id
    @Column(name = "index", nullable = false)
    protected String index;

    @Column(name = "value", nullable = false)
    protected String value;

    //getters/setters
}

然后我的实体将存储在数据库中:

@Entity
@IdClass(IndexId.class)
@Table(name = "bibliographic_single_index")
public class BibliographicSingleIndex extends BaseIndex implements Serializable { }

这是我得到的错误:Persistent entity 'BibliographicSingleIndex' should have primary key。 我还尝试使用声明为private 的属性,我在这个主题上看到的articles 似乎做同样的事情。

通过这些代码可以识别出我做错了什么吗?

【问题讨论】:

  • 您的@Id 字段上方不应该有类似@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "some_gen") 的东西吗?
  • @MrFisherman 我试过了,但事实并非如此。另外,我为此设置了 IndexId。

标签: java hibernate spring-data-jpa


【解决方案1】:

我相信每个实体都需要一个单独的 java 类作为 id 类。我认为嵌入式 id 不会有问题。

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多