首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有@ManyToOne关系的QueryDSL投影

带有@ManyToOne关系的QueryDSL投影
EN

Stack Overflow用户
提问于 2014-12-30 12:40:31
回答 1查看 6.2K关注 0票数 7

我正在使用OpenJPA和QueryDSL,我试图通过使用QueryDSL的bean投影特性来避免操作元组对象。例如,我有这两个实体,具有@ManyToOne关系。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Entity
public class Folder {
    private Long id;
    private String name;
    private String path;
    @ManyToOne
    @JoinColumn(name = "FK_FILE_ID")
    private File file;
}

@Entity
public class File {
    private Long id;
    private String fileName;
}

当我执行这个查询时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<Folder> listFolders = query.from(folder)
.list(Projections.bean(Folder.class, folder.name, folder.file.fileName));

我有一个错误,说文件夹对象不包含fileName属性。

我理解QueryDSL在做什么,因为它是一个简单的“平面”投影,但是我想知道是否可以用查询找到的值填充我的folder.file对象的fileName属性。

注意:我知道我可以为我的Folder类定义一个构造函数,并使用这个方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
query.list(ConstructorExpression.create(Folder.class, folder.name,
folder.file.fileName));

但如果可能的话,我想避免这种情况,因为它迫使我为我的投影中想要的字段的N个组合定义N个构造函数。

EN

回答 1

Stack Overflow用户

发布于 2015-01-04 11:20:56

对于这种情况,您可以使用嵌套投影

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<Folder> listFolders = query.from(folder)
    .list(Projections.bean(Folder.class, folder.name, 
          Projections.bean(File.class, folder.file.fileName).as("file")));

下面是构造函数和bean投影的一种更明确的替代方法,也适用于这种情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MappingProjection<Folder> mapping = new MappingProjection<Folder>(Folder.class, folder.name, folder.file.fileName) {
 @Override
 protected Folder map(Tuple row) {
     Folder f = new Folder();         
     f.setName(row.get(folder.name));
     File file = new File();
     file.setFileName(row.get(folder.file.fileName));
     f.setFile(file);
     return f;
 }            

};

相关http://www.querydsl.com/static/querydsl/3.6.0/apidocs/com/mysema/query/types/MappingProjection.html

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27705687

复制
相关文章
Openlayers2卷帘功能的实现
在WebGIS开发中,经常会有用户提需求,要实现卷帘功能,卷帘功能主要是实现两张图之间的对比。在前文中,讲到了openlayers3以及Arcgis for js中卷帘的实现,在本文讲述如何在openlayers2中实现卷帘功能。
牛老师讲GIS
2018/10/23
1.5K0
Openlayers2卷帘功能的实现
openlayers之selectfeature
在本文叙述如何在openlayers中实现鼠标经过某一对象时,对象高亮;点击某一对象时,弹出该对象的信息。重点为OpenLayers.Layer.Vector和OpenLayers.Control.SelectFeature,下面开始讲解。
牛老师讲GIS
2018/10/23
1.6K0
openlayers之selectfeature
手机端实现打印功能
1、  打印代理PC,使用Spring轮询机制,每隔一定时间,通过HTTPClient,向服务器发出查询待打印队列的请求。
week
2018/08/27
1.8K0
WordPress 添加网页打印功能
网页页面打印功能方便我们快速链接打印机,Wordpress方面有很多插件,今天何先生在这里介绍简单代码就能实现的方法。
空木白博客
2019/04/23
1.8K0
OpenLayers入门(二)
好久不见,距离OpenLayers入门第一篇已经过了很久,为什么迟迟没有后续呢,主要有两个原因,一是因为近期项目里使用地图的部分比较少,二是因为很多时候即使功能做出来了,但是还是不能完全理解,不是很明白的东西除了贴代码之外也写不了啥,其实第一篇也是很基础很简单的,但是意外的是看的人是最多的,这让我意识到可能即使是贴一下代码对一些人也是有帮助的,这就是这一篇的主要目的,可能有一些地方会看不懂,但是不要问,问我也不知道,如果你恰好了解的话十分欢迎在评论里分享,感谢~
街角小林
2022/06/15
2.8K0
OpenLayers入门(二)
openlayers实现画圆
通过OpenLayers.Control.DrawFeature和OpenLayers.Handler.Point实现在地图上画圆心。
牛老师讲GIS
2018/10/23
3.3K0
openlayers实现画圆
c#实现打印功能
c#实现打印功能,可以设置纸张大小,字体和颜色等         /// <summary>         /// 打印的按钮         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void btnPrint_Click(object sender, EventArgs e)         {            
跟着阿笨一起玩NET
2018/09/20
3.5K0
OpenLayers入门(一)
OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。
街角小林
2022/06/15
5K0
OpenLayers入门(一)
element ui实现前台打印功能
      在项目中经常会使用打印功能,这次我们来看一下element ui实现打印功能,后台采用springboot作为后台接口方法,后台抽数据就不用看了,大家都明白,抽出来需要打印的数据就好,然后传给前台json数据。前台element ui来处理打印工作。下面咱们看一下前台如何做一个打印功能。
十分钟空间
2022/08/17
2.9K0
HTML打印准考证用JS在html页面实现打印功能
用JS在html页面实现打印功能 做项目时,有在网页实现全局和局部打印的需求,百度许久,现总结如下: 打印方式一: 1.首先在head里面加入下面一段js代码: <script language="javascript"> function preview(fang) { if (fang < 10){ bdhtml=window.document.body.innerHTML;//获取当前页的html代码 sprnstr="<!--startprint"+fang+"-->";//设置打印开始区域
SingYi
2022/07/14
9.9K0
HTML打印准考证用JS在html页面实现打印功能
利用bootstrap-table插件自带的打印功能打印表格
文章目录 1、前端代码: 2、前端页面: 1、表格数据展示 2、点击打印按钮之后: 3、插件下载地址: 4、碰到的bug 1、前端代码: <link href="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.css" rel="stylesheet"> <script src="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.js"
别团等shy哥发育
2023/02/25
2K0
利用bootstrap-table插件自带的打印功能打印表格
OpenFeign超时控制和日志打印功能
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")    value的值是8001程序名称
一个风轻云淡
2022/11/13
8590
OpenFeign超时控制和日志打印功能
Python Print打印计时器功能
我们仔细看看print的参数:print(value,sep=’ ‘,end=’\n’,file=sys.stdout,flush=False)
用户7886150
2020/11/25
1.9K0
Vite + Vue3 + OpenLayers
本文案例使用 Vite 搭建项目,在 Vue 3 的基础上使用 OpenLayers 。
德育处主任
2022/04/15
2.8K0
Vite + Vue3 + OpenLayers
Echart在Openlayers的应用
echart,一个由百度前端发起的canvas国产类库(官网:http://echarts.baidu.com/index.html)。echart其实是在canvas类库zrender的基础上做的主题图库,优点有数据驱动,图例丰富,功能强大,支持数据拖拽重计算,数据区域漫游等功能,不论是从使用便捷程度、美观程度等方面都是不错的选择,在本文讲述如何在Openlayers中结合echart实现地图统计图的展示。
牛老师讲GIS
2018/10/23
2.6K0
Echart在Openlayers的应用
openlayers实现在线编辑
在前面有篇博文讲述了基于Arcgis for js和wkt实现在线数据的采集和编辑功能,在本文讲述如何在openlayers实现类似的功能。上一篇博文的地址为:
牛老师讲GIS
2018/10/23
3.5K0
openlayers实现在线编辑
PPT如何打印奇数页和偶数页?获取更多打印功能?
1、点击[视图] 2、点击[大纲视图] 3、点击[文本] 4、点击[复制] 5、点击[开始菜单] 6、点击[Word] 7、点击[布局] 8、点击[纸张方向] 9、点击[横向] 10、点击[文本] 11、点击[粘贴] 12、点击[文本] 13、点击[文件] 14、点击[打印] 15、点击[打印所有页] 16、点击[仅打印奇数页]
裴来凡
2022/05/28
4.9K0
PPT如何打印奇数页和偶数页?获取更多打印功能?
openlayers实现多图显示
概述: 本文讲述在openlayers中如何实现多图联动。 思路: 1、判断鼠标在哪个地图上; 2、添加该地图的地图移动事件; 3、设置另外一个地图的bound为该地图的。 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>openlayers map</title> <link rel="stylesheet" href="http://localhost/olapi/theme
牛老师讲GIS
2018/10/23
1.3K0
点击加载更多

相似问题

如何在画布中(重新)填充圆形- requestAnimationFrame - HTML,JS

111

缩放元素时出现不必要的模糊效果

10

缩放HTML画布元素

14

用背景图像填充HTML画布中的圆形

14

标记在缩放时“改变”位置

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文