作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有两个实体:
@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/
我是一名优秀的程序员,十分优秀!