我很难在Hibernate中映射复合主键连接。下面是我的模式的简化图片。请注意,我不能更改架构。
简化模式
@Entity
@Table(name = "tree")
public class Tree implements Serializable {
@EmbeddedId
protected TreePK treePK;
@OneToOne(mappedBy = "tree")
private Activity activity;
}
@Embeddable
public class TreePK implements Serializable {
@Column(name = "id")
private Integer id;
//this is a foreign key from the volume table
@Column(name = "volume_id")
private Integer volumeId;
}
@Entity
@Table(name = "volume")
public class Volume implements Serializable {
@Id
private Integer id;
}
@Entity
@Table(name = "activity")
public class Activity implements Serializable {
@Id
private Integer id;
@JoinColumn(name = "tree_id", referencedColumnName = "id")
@OneToOne
private Tree tree;
}
引用com.corp.activity.tree的referencedColumnNames(id)未映射到单个属性
如何在Hibernate中构建这样的关系?我必须映射到单个属性(id),尽管主键是复合的。
Eclipselink和Hibernate都不能做到这一点。许多年前,OpenJPA是唯一能够做到这一点的JPA实现程序。
问题内容: 我的JPA模型中有以下类(省略了getters,setters和无关字段): 我需要定义一个类,使得当从所述类生成DDL时,相应的表的主键被由密钥和。我尝试了以下方法: 但这会为表生成以下内容: 请注意,和都是可为空的,当我尝试将DDL加载到SQL Server时会导致以下错误 无法在表“ PRICE”中的可为空的列上定义PRIMARY KEY约束 我不明白为什么这些可以为空,因为在域
EmbeddedId或IdClass注释用于表示复合主键。如何在没有(EmbeddedId或IdClass)的情况下使用复合主键? 如果可以在没有(EmbeddedId或IdClass)的情况下使用复合主键,那么如何使用EntityManager.find(Entity Class,Object primaryKey)方法在复合主键(Multiple primaryKey)的情况下查找实体(因为没
当我执行这个查询时,我会得到以下异常
我有一个复合主键,其中一个键为空。实体中必须存在哪些注释,以便我可以使用此类JPA获取数据: 我尝试使用IdClass Annotation和EmbeddedId Annotation,但出现异常: 例如,使用了数据,但在实际项目中使用了类似的数据,因此无法用值替换null。
我有两个表:A和B,都有一个复合主键。表B的PK也是表a主键的外键。 当我试图获取映射表B的类的实例时,我得到了以下异常: org.hibernate.TypeMismatchException 这两个类都位于package:com.cairone.ejemple01.entities 完整的日志输出为: 2016-09-21 12:28:24.505错误8568--[main] O.S.Boot
我有以下表格,如何将它们映射到JPA实体: 事件表与会议表具有一对多的关系。我如何在JPA中映射这种双向关系?