Java SQL-根据不同的属性获取任何行,不重复
是否可以运行一个查询,即对具有distinct属性的表执行fetch all并为该distinct属性选择任何匹配的行,而仅基于一个属性对唯一/不同的行不重要 如果 现在我想返回查询Java SQL-根据不同的属性获取任何行,不重复,java,mysql,sql,hibernate,Java,Mysql,Sql,Hibernate,是否可以运行一个查询,即对具有distinct属性的表执行fetch all并为该distinct属性选择任何匹配的行,而仅基于一个属性对唯一/不同的行不重要 如果 现在我想返回查询 row2 and either row1 or row2 不管是第一排还是第二排,我都不在乎 现在,理想情况下,我希望使用hibernate标准查询执行此操作,因为我已经有了一个用于此操作的查询生成器,我只是将其添加为一个选项 似乎 select distinct on (street) * from tbl
row2 and either row1 or row2
不管是第一排还是第二排,我都不在乎
现在,理想情况下,我希望使用hibernate标准查询执行此操作,因为我已经有了一个用于此操作的查询生成器,我只是将其添加为一个选项 似乎
select distinct on (street) * from tbl
工作 您可以尝试投影: 像这样的东西可能有用。它将根据“街道”属性选择唯一结果:
List results = session.createCriteria(Entity.class)
.setProjection( Projections.projectionList()
.add(Projections.distinct(Projections.property("street")))
)
.list();
在我看来,示例数据集中的每一行都是不同的;你能澄清一下你所说的“不同”是什么意思吗?@MickMemonic同一条街上有两个。这里的意思是以街道为基础。但是我找到了这个问题的答案:从tbl工作区中选择distinct on(street)*现在的问题是如何将它与hibernate标准一起使用,请参阅:我已经尝试过了。问题是我无法在关联属性上区分它。Projections.projectionList().add(Projections.distinct(Projections.property(“address.street”))导致错误:无法解析property:address.street of:mypackage.entities.Person实际的hibernate问题在这里,我看到这里没有提到关联:这里的注释格式很糟糕,这里有一个更好的视图:使用几乎可以正常工作的编辑进行更新。运行在纯sql中返回行,但在hibernate中返回零长度的sql。
List results = session.createCriteria(Entity.class)
.setProjection( Projections.projectionList()
.add(Projections.distinct(Projections.property("street")))
)
.list();