gpt4 book ai didi

java - @Embeddable 有自己的 id

转载 作者:行者123 更新时间:2023-12-02 01:57:37 26 4
gpt4 key购买 nike

我看到许多使用 @Embeddable 建立一对多关系的示例,如下所示:

@Entity
@Table(name = "profiles")
public class Profile {


@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "name")
private String name;

@ElementCollection
@CollectionTable(name = "profile_addresses", joinColumns = @JoinColumn(name = "profile_id"))
private List<Address> addresses;

// getters, setters
}

@Embeddable
public class Address {

@Column(name = "zip_code")
private String zipCode;

// other fields
}

它适用于这样的表:

  profiles:                   addresses:
| id | name | | profile_id | zip_code |
| 1 | Alex | | 1 | 95050 |
| 1 | 95109 |

但是如何在可嵌入的地址实体中使用它自己的自动生成的ID?例如,在这样的表中:

  profiles:                   addresses:
| id | name | | profile_id | address_id | zip_code |
| 1 | Alex | | 1 | 1 | 95050 |
| 1 | 2 | 95109 |

最佳答案

当您为 Embeddable 定义主键时,它就不再是 Embeddable 了。 Embeddable 由其父实体定义,不拥有自己的标识。这就是为什么 Embeddables 只能通过其父实体访问并且无论如何都不能取消引用的原因。

参见https://docs.oracle.com/javaee/6/api/javax/persistence/Embeddable.html

关于java - @Embeddable 有自己的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52098529/

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