我有一个名为SiteProperty
的POJO如下:
public class SiteProperty
{
private int sitePropertyId;
private int siteId;
private String key;
private String value;
private String type;
}
有没有办法为给定的value
获取siteId
的所有不同值?同样value
可能与siteId
0相同。所以基本上查询应该获取siteId
0的所有行,然后如果value
存在任何行指定siteId
然后必须返回siteId
0的那一行。
我将PostgreSQL
数据库用于我的应用程序。
我对此很新。任何建议,将不胜感激。感谢。
Basicaly我在表value
0中有很多key
和siteId
对,这是默认值。 value
的某些值对于同一key
可能有不同的siteId
。如果对于siteId
,value
对应key
则必须返回,否则value
对应key
siteId
应该返回0。返回数据应该是SiteProperty
我在pgAdmin工具中尝试了一个示例SQL查询来测试我得到的结果:
select * from site_property where site_key IN (SELECT DISTINCT site_key FROM site_property where site_id = 0 or site_id = 3) and site_id = 0 or site_id = 3;
此查询只是一个试用版,结果为我提供了siteId
的数据组合。
答案 0 :(得分:1)
您需要将Projection
添加到Criteria
(这是查询的构建器类):
Criteria criteria = getCurrentSession().createCritiera(SiteProperty.class);
criteria.add(Projections.distinct(Projections.property("value")));
criteria.add(Restrictions.eq("siteId", 0));
List<String> resultList = critiera.list();