我有实体
@Entity
@Table(name = "TEST")
public class TEST implements Serializable {
...
private String f1;
private String f2;
private String f3;
....
我需要创建选择abd只获取f1,f2字段。
public Map<Stirng, String> getTestF1AndF2() {
Map<String, String> map = new HashMap<>();
try {
Session mySession = HibernateUtil.getSessionFactory().openSession();
Query q = mySession.createSQLQuery("SELECT f1, f2 from TEST");
//???????????????
//fill map
mySession.close();
return map;
} catch (Exception e) {
LOG.log(Level.INFO, e.getMessage());
}
return null;
}
我可以使用myBatis或其他库,但我只需要使用hibernate。如何重新制作此映射?
答案 0 :(得分:1)
使用以下HQL查询将结果显示为Map
:
Query query = session.createQuery("select new map(f1 as f1, f2 as f2) from Test");
List<Map<String,String>> result = query.list();
请参阅此类似帖子:
How to fetch hibernate query result as associative array of list or hashmap
如果您想使用SQL查询,请使用:
Query query1 = session.createSQLQuery("select sname as name, grp as grp from students").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String,String>> result = query.list();
请注意,查询返回值列表,因此结果是其中的Map元素列表。