2017-04-11 1 views
0
@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ディメンションもそれに関連付けられています。Hibernateで関連する結合オブジェクトの列を選択的にフェッチできますか?

1)データベースからユーザーオブジェクトをフェッチするときに、UserDimensionから2〜3列しかフェッチしません。

2)私は動的にすべての列をフェッチし、選択した列をフェッチすることができますか?

ありがとうございました

答えて

1

最も簡単な答えはできません。 Hibernateは、エンティティ内で言及されたすべてのカラムを取得します。

回避策:

  1. あなたが同じテーブルではなく、限られた列に基づいて、2つの以上のエンティティUserShortとUserDimensionShortを定義することができます。

  2. JdbcTemplateを使用して、SQLクエリーを起動し(必要な列のみ)、マッピングを追加してエンティティフィールドに列データを取得できます。 (the example)

関連する問題