JPA 视图查询 SELECT NEW

本文介绍了如何在Spring JPA框架下利用SELECT NEW语法创建视图查询,将多个实体表的字段组合成一个新的类,如GoodsSales,用于数据传输对象(DTO)的转换。详细内容包括DTO类的定义和JPA Repository的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自 : http://blog.youkuaiyun.com/chaijunkun/article/details/8442406

适应场景: 

1 用SpringJPA框架

2 需要选取多个实体表的字段, 组装成一个类时(例如下面例子中的GoodsSales类是由Order类的数据组成的)


1. DTO 类 GoodsSales

package com.exodus.weistore.goods.data;

import java.io.Serializable;

public class GoodsSales implements Serializable{
	private static final long serialVersionUID = 4497500574990765498L; 
	
	//产品id
	private String goodsId;
	//产品总销量
	private Long amount;

	public GoodsSales()
	{ };
	
	public GoodsSales(String goodsId, long amount) {  
        this.goodsId = goodsId;  
        this.amount = amount;  
    } 
	
	public String getGoodsId() {
		return goodsId;
	}
	public void setGoodsId(String goodsId) {
		this.goodsId = goodsId;
	}
	public Long getAmount() {
		return amount;
	}
	public void setAmount(Long amount) {
		this.amount = amount;
	}
	
	
}



2. repository  实例代码

<span style="font-size:14px;">package com.exodus.weistore.goods.repository;

import java.util.ArrayList;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.exodus.weistore.goods.data.GoodsSales;
import com.exodus.weistore.goods.model.Goods;

@Repository
public interface GoodsRepository
	extends JpaRepository<Goods, String>, JpaSpecificationExecutor<Goods>
{
	
	@Query("SELECT NEW com.exodus.weistore.goods.data.GoodsSales(o.goodsId, SUM(o.amount)) "
			+ "FROM Order o "
			+ "WHERE o.state = Order$OrderState.completion AND o.sellerId = ?1 AND o.goodsId IN (?2) "
			+ "GROUP BY o.goodsId")
</span><h1><span style="font-size:14px;">	public ArrayList<GoodsSales> getGoodsSales(Integer audienceId, String[] goodsIds);</span></h1><span style="font-size:14px;">}</span>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值