我有一个字典结构,我们需要传递给前端。目前,它为一个下拉菜单提供不同的值,其余下拉菜单的可用值取决于第一个下拉菜单的选择
@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;
//...
}
但是我不知道如何处理它的映射方面。 defaultValues应该简单明了,要么通过将这些值添加到CAR表中,要么通过一对一关系而不是使用Embeddable,但是对于可嵌入对象内部的集合没有任何想法,将使用已经存在的结构。
答案 0 :(得分:1)
我不确定我是否正确理解了这个问题,但是如果将关系映射移到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;