jpa onetoone_JPA OneToOne关联 设置问题

下面的代码说明了Employee和EmployeeInfo是一对一关系。他们都使用复合主键,建表时需要在Employee表建立一个外键,从Employee的主键列id,name指向EmployeeInfo的主键列INFO_ID和INFO_NAME.

...

@Entity@IdClass(EmpPK.class)@Table(name = "EMPLOYEE")

public class Employee {

private int id;

private String name;

private String address;

@OneToOne(cascade = CascadeType.ALL)

@PrimaryKeyJoinColumns({

@PrimaryKeyJoinColumn(name="id", referencedColumnName="INFO_ID"),

[color=red]@PrimaryKeyJoinColumn (name="name" , referencedColumnName="INFO_NAME")})

EmployeeInfo info; }[/color]

@Entity@IdClass(EmpPK.class)

@Table(name = "EMPLOYEE_INFO")

public class EmployeeInfo {

@Id

@Column(name = "INFO_ID")

private int id;

@Id @Column(name = "INFO_NAME")

private String name; }

主要想用id 和 info_id 关联,但是表结构分别定义了复合主键,上面红色部分写上后,查询时就会关联,但是本不想用其关联,不写就会报错

org.hibernate.MappingException: Foreign key (FKA0CF06E343644E74:t_EMPLOYEE[id,name])) must have same number of columns as the referenced primary key (EMPLOYEE_INFO[INFO_ID,INFO_NAME])

求教,如何设置JPA OneToOne 只是关联ID,千万不要说 表设计时取消 复合主键,麻烦了各位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值