簡體   English   中英

Hibernate 帶有 POJO 構造函數的 JoinColumn(沒有實體)

[英]Hibernate JoinColumn with a POJO constructor (without an Entity)

我有一個看起來像這樣的 POJO

@AllArgsConstructor
public class POJO {
  @Getter
  @Setter
  private String name;

  @Getter
  @Setter
  private int age;
}

我使用這個 POJO 從 hql 查詢中設置值,如

session.createQuery("Select new fullyQualifiedName.POJO(emp.name, emp.age) From Employee emp where emp.id = 1");

最近,有人要求我向 POJO 添加一個 List 屬性。 如中,

@AllArgsConstructor
public class POJO {
  @Getter
  @Setter
  private String name;

  @Getter
  @Setter
  private int age;

  @Getter
  @Setter
  private List<Hobby> hobbies;
}

但是,此時,我不知道如何加入愛好表,以列表的形式獲取值並傳遞給構造函數。

有哪些可能的方法來實現這一目標?

我不認為你可以用new關鍵字來實現你想要的。 也許其他人可能對這個結構更有幫助,但我還沒有看到任何提供帶有new關鍵字的集合的示例。 我認為這個結構有一些局限性。

至於我提出的解決方案:

  1. 將您的查詢更改為Select emp, h From Employee emp left join Hobby h where emp.id = 1 您還可以根據您的用例使用內部聯接。

  2. 為您的查詢 object 設置自定義 ResultTransformer。 就像是:


    query.setResultTransformer(
        new ResultTransformer() {
            @Override
            public Object transformTuple(Object[] tuple, String[] aliases) {            
                return tuple;
            }
            @Override
            public List transformList(List collection) {
               //Each member of collection is a Object[], we are working at row level 
               //You should process the collection, eliminate duplicates etc and return a 
               //List containing a single POJO object
            }
        }
    );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM