Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅从@ManyToOne关系中获取一列_Java_Jpa - Fatal编程技术网

Java 仅从@ManyToOne关系中获取一列

Java 仅从@ManyToOne关系中获取一列,java,jpa,Java,Jpa,我试图缩小我的一个实体,因为它不需要加载整个相关对象。我想要实现的不是加载映射为@manytone关系的整个实体,而是只加载其字段中的一个。假设我们有以下两个实体(来自样本的实体由以下两部分组成): 我希望以更小的会话实体结束,它看起来像: @Entity public class Session { @Id private Long id; private String someField; @ManyToOne @JoinColumn(name = "

我试图缩小我的一个实体,因为它不需要加载整个相关对象。我想要实现的不是加载映射为@manytone关系的整个实体,而是只加载其字段中的一个。假设我们有以下两个实体(来自样本的实体由以下两部分组成):

我希望以更小的会话实体结束,它看起来像:

@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;
}