首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在组合键和@ManyToOne JoinColumns之间共享列

在组合键和@ManyToOne JoinColumns之间共享列
EN

Stack Overflow用户
提问于 2013-07-05 05:02:26
回答 1查看 1.6K关注 0票数 1

我遇到了一个问题,我不知道是否可以通过使用hibernate/jpa注释来解决这个问题。问题是我有一个组合键,它与我的一个外键组合id具有相同的列,并且我希望在表中共享相同的列。例如:

代码语言:javascript
代码运行次数:0
运行
复制
@Entity
class Id {
  @Id
  @Column(name = "idPessoa")
  public Integer idShared;
}

@Embeddable
class APK {
  @ManyToOne
  @JoinColumn(name = "idShared")
  public Id idShared;
  public String nKey;
}

@Entity
class A {
  @EmbeddedId
  public APK id;
}

@Embeddable
class BPK {
  @ManyToOne
  @JoinColumn(name = "idShared")
  public Id idShared;
  public Integer nCode;
}

@Entity
class B {
  @EmbeddedId
  public BPK id;

  @ManyToOne
  @JoinColumns({ @JoinColumn(name = "idShared", nullable = false, insertable = false, updatable = false), @JoinColumn(name = "nKey", nullable = false) })
  public A a;
}

问题是我如何在A和B之间共享列idShared,并在@ManyToOne中使用它作为外键?

我已经尝试在@JoinColumn中使用@JoinColumn,名称为idShared,但是我得到一个错误,说我需要使用insert = false和update = false,我已经放入insertable = false和updateable = false,但是我得到另一个错误,说我不能混合。

我找到了一个可能的解决方案,说使用:

代码语言:javascript
代码运行次数:0
运行
复制
@ManyToOne
@JoinColumnsOrFormulas(value = {
@JoinColumnOrFormula(formula = @JoinFormula(value = "idShared", referencedColumnName = "idShared")),
@JoinColumnOrFormula(column = @JoinColumn(name = "nKey", nullable = false)) })
public A a;

但它给了我一个错误:

代码语言:javascript
代码运行次数:0
运行
复制
Unable to find column with logical name  in table A

它必须查找的列的"name“属性似乎以某种方式为空。

请帮帮忙!

EN

回答 1

Stack Overflow用户

发布于 2013-07-05 13:13:31

请看一下Official Java EE 6 Tutorial about composite primary key。您可以使用@EmbeddedId @Embeddable和/或@IdClass注释。

例如

代码语言:javascript
代码运行次数:0
运行
复制
// File: APK.java ---------------------
@Embeddable
public class APK implements Serializable {
  public Integer idShared;
  public String nKey;
}

// File: A.java ---------------------    
@Entity
public class A {
  @EmbeddedId public APK id;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17478064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档