繁体   English   中英

jpa映射的超类没有id

[英]jpa mapped superclass without id

我对以下问题感到好奇。 我有两个人, AB 它存储几乎相同的信息(例如,名称 - 在现实生活中它更复杂),但连接和外键不同。

我可以做一个映射的超类,没有Id。 class Aclass B ,扩展映射的超类,只包含Id属性?

例如:

import lombok.Getter;
import lombok.Setter;
import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;

@MappedSuperclass
@Getter
@Setter
@Data
class superClass {

    @Column(name = "name")
    private String name;

}

@Entity
@Table(name = "A")
@Data
class A extends superClass {

    @Id
    @OneToMany
    @JoinColumn(name = "id", referencedColumnName = "referencedName")
    private SomeClass id;

}

@Entity
@Table(name = "B")
@Data
class B extends superClass {

    @Id
    @OneToOne
    @JoinColumn(name = "id", referencedColumnName = "referencedName")
    private SomeOtherClass id;

}

JPA是否有效? 我确实读过了mappedSuperClass的JavaDocs,并且没有提到它。 我会说,它是有效的 - 但是IntelliJ Idea说,超类必须有一个Id属性。 我没有在互联网上找到任何关于此的内容。

编辑:抱歉,我错过了。 我在超类上留下了Entity注释,这就是Idea签署错误的原因。 我删除了,错误消失了。 但我不确定,这是有效的。

是的,没有要求MappedSuperclass包含任何内容。 它只是为子类提供额外的注释。

是的,它是有效的。 无论如何,您的超类不会在数据库中显示为表格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM