gpt4 book ai didi

java - JPA:如何仅映射另一个实体的一个属性

转载 作者:行者123 更新时间:2023-12-02 06:16:47 27 4
gpt4 key购买 nike

假设我有两个实体:

@Entity
public class Phone {

@Id
private Long id;

private String number;
}
@Entity
public class Person {

@Id
private Long id;

private String name;
}

人和手机之间的关系是一对一的。

如何在电话 ID 映射的 Person 实体中仅访问电话号码

@Entity
public class Person {

@Id
private Long id;

private String name;

// ???
private String phoneNumber;
}

不映射整个实体的原因是因为在一些更现实的实体中属性太多。

最佳答案

我认为你不能,但这样的事情可能是可以接受的:

public class Person {

@OneToOne
@JoinColumn(name = "phone_id")
private Phone phone;

public String getPhoneNumber() {
return phone.getNumber();
}

}

虽然您映射了整个对象,而不仅仅是单个属性,但您只公开了所需的单个属性。其他的东西是隐藏的。

或者,使用 View 在数据库层执行此操作:

create view person_with_phone as
select p.id, p.name,f.number
from person p
join phone f on f.id=p.phone_id

然后有一个实体类来匹配 View 。您需要在 JPA 实现中关闭架构创建。

关于java - JPA:如何仅映射另一个实体的一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55868570/

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