@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)我可以动态切换所有列提取和选定列提取吗?
由于
答案 0 :(得分:1)
最简单的答案你不能。 Hibernate检索实体中提到的所有列。
可能的解决方法:
您可以根据相同的表定义另外两个实体UserShort和UserDimensionShort,但列数有限。
使用JdbcTemplate,您可以在其中触发SQL查询(仅包含所需的列)并添加映射以将列数据获取到实体字段。 (见the example)