gpt4 book ai didi

java - 使用嵌入对象覆盖外键列名称

转载 作者:行者123 更新时间:2023-12-02 11:56:45 24 4
gpt4 key购买 nike

如果可嵌入对象已定义与实体的 OneToOne 关系。使用 Embeddable 对象的实体如何覆盖关系的列名称。

使用以下实体:

@Entity
public class User {

@Id
private int id;
@Embedded
private CubeLocation cubeLocation;
}

@Embeddable
public class CubeLocation {
@OneToOne
private MailBox mailBox;
// .. other non-relevant fields
}

@Entity
public class MailBox {
@Id
private String name;
private String cell;
}

用户实体的数据库表将包含列 ID 和 MAILBOX_NAME。如何将数据库列的名称从 MAILBOX_NAME 更改为 MBX_ID?

我尝试为 User 实体定义 AssociationOverride 注释,但在这种情况下我收到此错误:

    @Entity
@AssociationOverride(
name="cubeLocation.mailBox",
joinColumns=@JoinColumn(name="MBX_ID"))
public class User {
}

错误:

org.hibernate.AnnotationException: Illegal attempt to define a @JoinColumn with a mappedBy association: cubeLocation.mailBox

最佳答案

关联覆盖应该在可嵌入的情况下进行:

@Entity
public class User {

@Id
private int id;

@Embedded
@AssociationOverride(
name="mailBox",
joinColumns=@JoinColumn(name="MBX_ID"))
private CubeLocation cubeLocation;
}

关于java - 使用嵌入对象覆盖外键列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557755/

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