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