Java 仅从@ManyToOne关系中获取一列
我试图缩小我的一个实体,因为它不需要加载整个相关对象。我想要实现的不是加载映射为@manytone关系的整个实体,而是只加载其字段中的一个。假设我们有以下两个实体(来自样本的实体由以下两部分组成): 我希望以更小的会话实体结束,它看起来像:Java 仅从@ManyToOne关系中获取一列,java,jpa,Java,Jpa,我试图缩小我的一个实体,因为它不需要加载整个相关对象。我想要实现的不是加载映射为@manytone关系的整个实体,而是只加载其字段中的一个。假设我们有以下两个实体(来自样本的实体由以下两部分组成): 我希望以更小的会话实体结束,它看起来像: @Entity public class Session { @Id private Long id; private String someField; @ManyToOne @JoinColumn(name = "
@Entity
public class Session {
@Id
private Long id;
private String someField;
@ManyToOne
@JoinColumn(name = "sessionId", referencedColumnName = "id")
private LocalDateTime lastLogin; // lastLogin value from User Entity
}
我试图通过在@Column注释中混合来实现这一点,但忘记了@manytone上不允许这样做。我在想@ElementCollection可以做些什么:
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "OTHER_TABLE")
@Column(name = "someFieldFromOtherTable")
private Set<String> someFieldFromOtherTableValues;
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name=“其他表格”)
@列(name=“someFieldFromOtherTable”)
私有设置someFieldFromOtherTableValues;
是否有可能只从反射的实体中获取一列?这就是我的代码中的内容。试试看:
@Entity
@Table(name = "t_address")
@SecondaryTables({
@SecondaryTable(name="t_city"),
@SecondaryTable(name="t_country")
})
public class FirstTable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String street1;
private String street2;
@Column(table="t_city")
private String city;
@Column(table="t_city")
private String state;
@Column(table="t_city")
private String zipcode;
@Column(table="t_country")
private String country;
}
好主意,但我在保存映射到辅助表的实体时出错。显然,次表不能映射为实体。
@Entity
@Table(name = "t_address")
@SecondaryTables({
@SecondaryTable(name="t_city"),
@SecondaryTable(name="t_country")
})
public class FirstTable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String street1;
private String street2;
@Column(table="t_city")
private String city;
@Column(table="t_city")
private String state;
@Column(table="t_city")
private String zipcode;
@Column(table="t_country")
private String country;
}