【发布时间】:2021-12-19 04:42:43
【问题描述】:
鉴于下面的模型,当使用 JPA 从myentity 表中获取实体时,是否有办法防止从anotherentity 表中获取实体的二次获取,但会为我们提供@987654323 @String 值(用作外键)本身?
据我所知,由于 Java 中声明的类型,这不可能,我想知道是否有办法访问该信息而无需额外的提取,考虑到它是 确实在myentity 表中作为实际的varchar 列。
如果有帮助,我们使用 EclipseLink 作为我们的 JPA 提供者。
当前型号
@Entity
@Table(name = "myentity")
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@IdClass(MyIdClass.class)
public class MyEntity {
@Id
@Column(updatable = false)
private String foo;
@Id
@Column(updatable = false)
private String bar;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "my_foreign_key", referencedColumnName = "external_pk")
private AnotherEntity anotherEntity;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class MyIdClass implements Serializable {
private String foo;
private String bar;
}
@Entity
@Table(name = "anotherentity")
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class AnotherEntity {
@Id
@Column(name = "external_pk", nullable = false, updatable = false)
private String externalPk;
@Column
private String something;
}
【问题讨论】:
-
不,你不能。但是你可以定义 anotherEntity LAZY 然后用外键添加一个额外的属性
标签: java jpa spring-data-jpa eclipselink