Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 按收集规模排列的前5项记录_Java_Spring Data_Jpql - Fatal编程技术网

Java 按收集规模排列的前5项记录

Java 按收集规模排列的前5项记录,java,spring-data,jpql,Java,Spring Data,Jpql,我有以下实体: public final class Stock implements Serializable { @JsonIgnore @ManyToMany(mappedBy = "stocks", fetch = FetchType.LAZY) private Set<User> users = new HashSet<>(); [Other fileds] [getters/setters] } 我想要一个jqp

我有以下实体:

public final class Stock implements Serializable {

    @JsonIgnore
    @ManyToMany(mappedBy = "stocks", fetch = FetchType.LAZY)
    private Set<User> users = new HashSet<>();

    [Other fileds]

    [getters/setters]
}

我想要一个jqpl查询,返回前5名股票实体。有人能帮我吗?

假设您的实体映射如下

@Entity
public class Stock {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column
    private String ticker;

    @JsonIgnore
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "stock_user", joinColumns = { @JoinColumn(name = "STOCK_ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "USER_ID", nullable = false, updatable = false) })
    private Set<User> users = new HashSet<User>();  
}
@实体
公开股{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@纵队
专用字符串自动售票机;
@杰索尼奥雷
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“stock\u user”,joinColumns={@JoinColumn(name=“stock\u ID”,nullable=false,updateable=false)},inverseJoinColumns={@JoinColumn(name=“user\u ID”,nullable=false,updateable=false)})
private Set users=new HashSet();
}
为了得到结果,我使用本机SQL执行了以下操作。如果您坚持使用JPQL,答案是您的朋友

public interface StockRepository extends JpaRepository<Stock, Integer> {

    @Query(value = "SELECT  s.ticker, COUNT(s.ticker) FROM stock s INNER JOIN "
            + "stock_user us ON s.id = us.stock_id  INNER JOIN user u on us.user_id = u.id GROUP BY s.ticker order by count(*) desc limit 1", nativeQuery = true)
    public List<Object[]> findStock();
}
公共接口StockRepository扩展了JpaRepository{
@查询(value=“从股票的内部联接中选择s.ticker、计数(s.ticker)”
+“s.id上的stock_user us=us.stock_id内部加入用户u ON us.user_id=u.id按s.ticker订单按计数分组(*)desc limit 1”,nativeQuery=true)
公共列表findStock();
}

假设您的实体映射如下

@Entity
public class Stock {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column
    private String ticker;

    @JsonIgnore
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "stock_user", joinColumns = { @JoinColumn(name = "STOCK_ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "USER_ID", nullable = false, updatable = false) })
    private Set<User> users = new HashSet<User>();  
}
@实体
公开股{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@纵队
专用字符串自动售票机;
@杰索尼奥雷
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“stock\u user”,joinColumns={@JoinColumn(name=“stock\u ID”,nullable=false,updateable=false)},inverseJoinColumns={@JoinColumn(name=“user\u ID”,nullable=false,updateable=false)})
private Set users=new HashSet();
}
为了得到结果,我使用本机SQL执行了以下操作。如果您坚持使用JPQL,答案是您的朋友

public interface StockRepository extends JpaRepository<Stock, Integer> {

    @Query(value = "SELECT  s.ticker, COUNT(s.ticker) FROM stock s INNER JOIN "
            + "stock_user us ON s.id = us.stock_id  INNER JOIN user u on us.user_id = u.id GROUP BY s.ticker order by count(*) desc limit 1", nativeQuery = true)
    public List<Object[]> findStock();
}
公共接口StockRepository扩展了JpaRepository{
@查询(value=“从股票的内部联接中选择s.ticker、计数(s.ticker)”
+“s.id上的stock_user us=us.stock_id内部加入用户u ON us.user_id=u.id按s.ticker订单按计数分组(*)desc limit 1”,nativeQuery=true)
公共列表findStock();
}