多个多对多的公共关联 table

Common associative table for multiple many-to-many

如何为多个多对多创建通用关联 table?为什么不起作用?

@ManyToMany
@JoinTable(name="CARS",
        joinColumns=
        @JoinColumn(name="RANGE_ID", referencedColumnName="ID"),
        inverseJoinColumns=
        @JoinColumn(name="MODEL_ID", referencedColumnName="ID")
)
private List<Models> models;

@ManyToMany
@JoinTable(name="CARS",
        joinColumns=
        @JoinColumn(name="RANGE_ID", referencedColumnName="ID"),
        inverseJoinColumns=
        @JoinColumn(name="TYPE_ID", referencedColumnName="ID")
)
private List<Types> types;

我想要关联 table "CARS":

range_id | model_id | type_id

想象一下如果您将新类型添加到类型列表或将新模型添加到模型列表会发生什么。新行会是什么样子?模型和类型不属于一起 - 根据您的 table 定义,它们应该属于一起。

您要找的是 Embeddable:

@Embeddable
public class ModelAndType {
  @ManyToOne
  private Model model;

  @ManyToOne
  private Type type;
}

这个可以用在你的模型中:

@Embedded
@ElementCollection
private List<ModelAndType> modelAndTypes;