JPA:忽略 Fetch 上的字段,但在保存时全部保存.是否有任何注释属性可以执行此操作?



我有以下实体。在此,我想获取除电话号码以外的所有数据。最好的解决方案是什么?如果我可以用注释来做就好了。

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
}

要告诉什么是最好的方法,你必须说出为什么要这样做以及你想要实现什么。 有很多选择:

  • 省略吸气剂
  • 使用投影(DTO 或接口(
  • 使用特性
  • 将继承与@MappedSuperclass一起使用

你能在你的领域使用@Transient吗?如果它是任何类的子类,那么在类级别请使用@Embedded

如果没有,那么你需要阅读这篇文章,因为这总是懒惰地从休眠中获取,第 19 章。提高性能:

惰性属性获取:访问实例变量时获取属性或单值关联。此方法需要生成时字节码检测,并且很少需要。

您可以在电话号码上使用@Basic(fetch = FetchType.LAZY),只是不要读取它或设置为 null 以防止任何读取

您可以使用@Column(insertable = true, updatable = false),我不确定在使用实体获取时是否可以忽略。 您可以使用 JPA 投影实现您的要求

@JsonIgnore它用于告诉杰克逊忽略Java对象的某个属性,但是