首页 > 解决方案 > 在@embeddedId 的一部分上的@OneToMany 实体映射

问题描述

我目前正在尝试使用复合键从表中提取一组实体,但我只想执行与 id_a 的连接以获得一个集合,而不是两者(id_a 和 id_b),这将产生一个结果。

这不是原始代码,但它是我想要实现的一个示例。

@Entity
public class ItemA {

  @EmbeddedId
  private ItemId itemId;

  @OneToMany
  private Set<ItemB> itemsB = new HashSet<>();

}

@Embeddable
public class ItemID implements Serializable {
  
  private Integer itemIDA;
  private Integer itemIDB;

}

@Entity
public class ItemB {

  @Id
  private Integer itemIDA;

}

我尝试了几种方法,主要是用 @JoinColumn 和 @JoinTable 注释 @OneToMany

@OneToMany
@JoinTable(
    name = "itemB",
    joinColumns = { @JoinColumn(name = "itemIDA") },
    inverseJoinColumns = { @JoinColumn(name = "itemIDA") }
)
    private Set<ItemB> detalleUsuarios = new HashSet<>();

我也试过可能试图进入 ItemId 类

@OneToMany
@JoinTable(
    name = "itemB",
    joinColumns = { @JoinColumn(name = "itemID.itemIDA") },
    inverseJoinColumns = { @JoinColumn(name = "itemIDA") }
)
    private Set<ItemB> detalleUsuarios = new HashSet<>();

但我收到以下错误

A Foreign key refering com.example.ItemA from com.example.ItemB has the wrong number of column. should be 2

标签: javaspring

解决方案


推荐阅读