如何将许多映射到许多作为嵌套的对象



我有一个字典结构,我们需要传递到前端。目前,它为一个下拉列表提供了不同的值,其余的下拉列表的可用值取决于第一个的选择

@Entity
@Table(name = "CAR")
@Data
public class Car{
  @Id
  @Setter(NONE)
  Long id;
  String name;
  @ManyToMany
  @JoinTable(name = "CAR_WHEELS",
        joinColumns = @JoinColumn(name = "CAR_FK"),
        inverseJoinColumns = @JoinColumn(name = "WHEEL_FK"))
  Set<Wheel> wheels;
  //some other similar sets
}

现在沿着可用值我们想要为这些值有一个默认值,因此我们正在考虑以下内容:

@Entity
@Table(name = "CAR")
@Data
public class Car{
  @Id
  @Setter(NONE)
  Long id;
  String name;
  AvailableValues availableValues;
  DefaultValues defaultValues;
}

,然后

@Embeddable
class AvailableValues{
  Set<Wheels> wheels;
  //...
}
@Embeddable
class DefaultValues{
  Wheel wheel;
  //...
}

,但我不知道如何处理它的映射侧。通过将这些值添加到汽车表中,或者是通过一对一的关系而不是使用可嵌入的,但不能对可嵌入的对象内的集合提出任何想法,违约值应该是简单而简单的已经存在结构。

我不确定我是否正确理解了这个问题,但是如果刚刚将关系映射移至 AvailableValues

,将保留DB模式
@Embeddable
@Data
class AvailableValues {
    @ManyToMany
    @JoinTable(name = "CAR_WHEELS",
            joinColumns = @JoinColumn(name = "CAR_FK"),
            inverseJoinColumns = @JoinColumn(name = "WHEEL_FK"))
    Set<Wheel> wheels;
}

可选,如果由于某种原因您想更改包含实体中的映射,则可以使用@AssociationOverride

@Embedded
@AssociationOverride(name = "wheels",
        joinTable = @JoinTable(name = "MY_CAR_WHEELS",
                joinColumns = @JoinColumn(name = "MY_CAR_FK"),
                inverseJoinColumns = @JoinColumn(name = "MY_WHEEL_FK")
        )
)
AvailableValues availableValues;

最新更新