Jpa mapped superclass without id
I am interested in the following problem. I have two sides, A
and B
. It stores almost the same information (for example, the name is more difficult in real life), but joins and foreign keys are different.
Can I make a mapped superclass without Id. And class A
and class B
by extending the mapped superclass containing only the Id attribute?
For example:
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;
}
Will this be valid JPA? I read mappedSuperClass
JavaDocs and didn't say anything about it. I would say this is indeed the case, but IntelliJ Idea says the superclass should have an Id attribute. I haven't found anything online about this.
Edit: Sorry I missed this. I left the annotation Entity
on the superclass and so the idea signed an error. I removed this and the error went away. But I'm not sure if this is really the case.
source to share