当前位置: 首页 > 知识库问答 >
问题:

JPA组合关键部件连接

姚向晨
2023-03-14
@Embeddable
public class DemandId implements Serializable {

@Column(name = "\"ORDER\"", nullable = false)
private String order;

@Column(name = "SNRP", nullable = false)
private String number;
}

DemandEntity:实体本身

@Entity
@Table(name = "DEMAND")
public class DemandEntity implements Serializable {

@EmbeddedId
private DemandId id;

@OneToMany(fetch = EAGER, cascade = ALL, mappedBy = "demand")
private Set<PartEntity> parts = new HashSet<>();
}

伙伴关系:

@Entity
@Table(name = "PART")
public class PartEntity implements Serializable {

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

@ManyToOne
@JoinColumn(name = "SNRP", referencedColumnName = "SNRP", insertable = false, updatable = false)
private DemandEntity demand;
}

这种方法导致一个例外:

不幸的是,我无法添加另一个联接列

@JoinColumn(name = "\"ORDER\"", referencedColumnName = "\"ORDER\"", insertable = false, updatable = false)

因为PART表不包含ORDER字段,并且数据库的结构无法更改。

有没有办法执行这样的映射?

共有1个答案

伏业
2023-03-14

如果您有复合主键,并且希望有一对多的映射,我建议将这些键作为复合主键,而不是将它们作为复合唯一键。

并将自动生成的序列作为主键。

更好更方便。顺便说一下,这是我的人事意见。

 类似资料:
  • 我尝试用JPA连接两个表 第一个表与实体ReportTripSing相关联第二个表与实体TripData相关联第二个表的主键用复合键(实体TripDataPK)描述 如您所见,我想将ReportTripSingle与TripData结合起来 它不起作用:( 这是堆栈跟踪: 原因:组织。冬眠AnnotationException:com的referencedColumnNames(FTP\U ID)

  • 我有以下表格,如何将它们映射到JPA实体: 事件表与会议表具有一对多的关系。我如何在JPA中映射这种双向关系?

  • 问题内容: 我的JPA模型中有以下类(省略了getters,setters和无关字段): 我需要定义一个类,使得当从所述类生成DDL时,相应的表的主键被由密钥和。我尝试了以下方法: 但这会为表生成以下内容: 请注意,和都是可为空的,当我尝试将DDL加载到SQL Server时会导致以下错误 无法在表“ PRICE”中的可为空的列上定义PRIMARY KEY约束 我不明白为什么这些可以为空,因为在域

  • 问题内容: 我有以下表格如何将它们映射到JPA实体: 事件表与会议表具有一对多关系。如何在JPA中映射这种双向关系? 问题答案: 在JPA 2.1规范的第2.4.1节中讨论。

  • 我用复合键定义了两个实体之间的多对多关系。问题是,当我获得join对象时,它只被过滤了关系的一侧,而不是两边。 图片使问题更加清晰。这里,我要查找的是dtid=185和prid=352,但我从多对多关系中得到的是两个突出显示的行。 天丁:

  • 问题内容: 是否可以在普通的JPA或JPA + Hibernate扩展中声明复合键,而复合键的元素是一个序列? 这是我的复合课程: 我已经提供的值,,和。我想构造一个像下面这样的实体: 当我调用)时,我希望生成并插入集成。 这可能吗?如果是这样,简单的方法是什么?(我不想使用应用程序提供的密钥或本机sql)。 问题答案: 我相信使用普通的JPA是不可能的。