如何解决Java JPA-每个类继承表-ID冲突
我有一个带ID字段的父类和两个子类。我已经应用了TABLE PER CLASS继承。 这两个表中的某些行具有相同的标识符。 (相同的ID)
调用JpaRepository的findAll()时,我遇到org.hibernate.PropertyAccessException
该如何解决冲突?我无法更改这些表中的ID,因为它们具有很多依赖性和外键约束。
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Parent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@TableGenerator(name = "content_id_generator",table = "generic_sequences",pkColumnName = "sequence_name",valueColumnName = "sequence_value",pkColumnValue= "content_seq",allocationSize = 20)
@GeneratedValue(strategy = GenerationType.TABLE,generator = "content_id_generator")
@Column(updatable = false)
private Long id;
@Column(length = 250,nullable = false)
@NotNull
@Size(min = 1,max = 250)
private String title;
...
有子类Child1和Child2扩展了Parent。
还有另一个依赖于Content的继承。
@Entity
@Table(name = "text_id_changed")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public abstract class DependentCalss implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(updatable = false)
private Long id;
...
DependentCalss有两个子类DependentCalssChild1和DependentCalssChild2。
@Entity
@DiscriminatorValue("DependentCalssChild1")
public class DependentCalssChild1 extends DependentCalss {
private static final long serialVersionUID = 1L;
@ManyToOne
@JoinColumn(name = "child_1_id")
private Child1 child1;
...
AND
@Entity
@DiscriminatorValue("DependentCalssChild2")
public class DependentCalssChild2 extends DependentCalss {
private static final long serialVersionUID = 1L;
@ManyToOne
@JoinColumn(name = "child_2_id")
private Child2 child2;
...
和jpaRepository
@Repository
public interface DependentCalssRepository extends JpaRepository<DependentCalss,Long> {
}
当我调用DependentCalssRepository的 findAll()时,我发现 org.hibernate.PropertyAccessException 该字段无法设置,等等。
Child1和Child2在单独的表中具有相同的ID时会发生。 我该怎么解决?由于数量依赖性和约束性强,我无法更改表中的ID。谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。