java JPA:Fetch时忽略字段,但在保存时保存所有字段,是否有任何注解属性来执行此操作?

hujrc8aj  于 2023-05-27  发布在  Java
关注(0)|答案(4)|浏览(139)

我有以下实体。在这里,我想获取除phoneNumber之外的所有数据。最好的解决办法是什么?如果我能用注解来做就好了。

public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

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

@Column(name = "gender")
private char gender;

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

@Column(name = "skills")
private String[] skills;

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

//getter setter

}
brtdzjyr

brtdzjyr1#

要想知道什么是最好的方法,你必须说出你为什么要这样做,你想达到什么目的。有很多选择:

  • 省略吸气剂
  • 使用投影(DTO或接口)
  • 使用阻抗
  • 使用继承与@MappedSuperclass
x6yk4ghg

x6yk4ghg2#

请在您的领域使用@Transient。如果它是任何类的子类,那么在类级别上请使用@Embedded
如果没有,那么你需要阅读这篇文章,因为这总是从Hibernate中延迟获取,第19章。提高性能:
惰性属性获取:当访问示例变量时,获取属性或单值关联。这种方法需要构建时字节码插装,而且很少需要。

mi7gmzs6

mi7gmzs63#

您可以在phoneNumber上使用@Basic(fetch = FetchType.LAZY),但不读取它或设置为null以防止任何读取

gwo2fgha

gwo2fgha4#

你可以使用@Column(insertable = true, updatable = false),我不确定我们是否可以在使用实体获取时忽略它。您可以使用JPA Projections来实现您的需求
此外,@JsonIgnore可能是有用的。它用于告诉Jackson忽略Java对象的某个属性,但

相关问题