gpt4 book ai didi

java - 如何将多对多映射为嵌套嵌入对象

转载 作者:行者123 更新时间:2023-12-02 10:27:22 25 4
gpt4 key购买 nike

我有一个字典结构,我们需要将其传递给前端。目前,它为一个下拉列表提供不同的值,并根据第一个下拉列表的选择为其余下拉列表提供可用值

@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,但无法对可嵌入对象内的集合提出任何想法,这将使用已经存在的结构。

最佳答案

我不确定我是否正确理解了这个问题,但是如果关系映射刚刚移至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;

关于java - 如何将多对多映射为嵌套嵌入对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com