我们可以在Hibernate中有选择地获取相关联接对象的列吗?

时间:2017-04-11 16:43:44

标签: java spring hibernate jpa hibernate-criteria

@Entity
@Table(name = "USER_INFO")
public class User  {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "USER_ID")
    private int userId;

    @OneToOne
    @JoinColumn(name = "CGH_SOE_ID", referencedColumnName = "CGH_SOE_ID", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))
    @Fetch(FetchMode.JOIN)
    private UserDimension userDimension;

.......

@Entity
@Table(name = "USER_DIMENSION")
public class UserDimension {

    @Column(name = "EMPLID", length = 11)
    private String employeeLid;

    @Id
    @Column(name = "CGH_SOE_ID", length = 10, nullable = false)
    private String CGHSOEId;

我使用Criteria查询从数据库中获取User对象,User dimensionstion与之相关联。

1)当我从数据库中获取用户对象时,我想从UserDimension中只获取2-3列。

2)我可以动态切换所有列提取和选定列提取吗?

由于

1 个答案:

答案 0 :(得分:1)

最简单的答案你不能。 Hibernate检索实体中提到的所有列。

可能的解决方法:

  1. 您可以根据相同的表定义另外两个实体UserShort和UserDimensionShort,但列数有限。

  2. 使用JdbcTemplate,您可以在其中触发SQL查询(仅包含所需的列)并添加映射以将列数据获取到实体字段。 (见the example)