我有一个字典结构,我们需要传递给前端。目前,它为一个下拉列表提供了不同的值,其余的下拉列表中的可用值取决于第一个下拉列表的选择
@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,但不能为embeddable中的集合想出任何概念,因为它将使用现有的结构。
发布于 2018-12-20 03:49:06
我不确定我是否正确理解了这个问题,但是如果将关系映射移动到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;
https://stackoverflow.com/questions/53849148
复制相似问题