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

标签 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 维度与之关联。

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

2)我可以在所有列获取和选定列获取之间动态切换吗?

谢谢

最佳答案

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

可能的解决方法:

  1. 您可以基于相同的表但列数有限再定义 2 个实体 UserShort 和 UserDimensionShort。

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

关于java - 我们可以有选择地获取 Hibernate 中关联连接对象的列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43351775/

相关文章:

java - 将 Telegram API 从 GitHub 存储库导入到 Android Studio

spring - 如何修复与本地主机 :5432 refused in postgres installed on CentOS 7? 的连接

java - 为什么我的单向 @ManyToOne 关系中的表没有加入 Spring Data findAll() 查询?

java - Spring Data JPA 删除不是我所期望的

java - 进度对话框阻塞

java - 我应该如何生成初始化 vector ?

java - 将方法与 spred 同步

java - 不为特定列更改创建修订

java - 如何将Mysql中的位类型映射到 hibernate ?

java - 进程无法访问文件,因为该文件正在被另一个进程使用