Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL-根据不同的属性获取任何行,不重复_Java_Mysql_Sql_Hibernate - Fatal编程技术网

Java SQL-根据不同的属性获取任何行,不重复

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

是否可以运行一个查询,即对具有distinct属性的表执行fetch all并为该distinct属性选择任何匹配的行,而仅基于一个属性对唯一/不同的行不重要

如果

现在我想返回查询

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();