Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 通过左侧联接表/Querydsl上的QBean映射使用空属性的对象_Java_Querydsl - Fatal编程技术网

Java 通过左侧联接表/Querydsl上的QBean映射使用空属性的对象

Java 通过左侧联接表/Querydsl上的QBean映射使用空属性的对象,java,querydsl,Java,Querydsl,我正在使用Querydsl 4.1.0从数据库生成我的Qtable,我自己也在创建Qbean,以便将结果转换为Java对象。我面临的问题是,我的A类有一个B类属性,如果我使用“左连接B”,那么如果数据库中A的id不存在B,这将导致该行B表中这些列的值为空,那么转换后的A对象将有一个B对象,具有所有空属性。是否有任何方法可以避免实例化这个不需要的B对象 我可以看到这里的问题是QBean的newInstance方法总是创建一个B实例并返回它,而不管所有字段的值是否为null,这在我看来是不正确的 我

我正在使用Querydsl 4.1.0从数据库生成我的Qtable,我自己也在创建Qbean,以便将结果转换为Java对象。我面临的问题是,我的A类有一个B类属性,如果我使用“左连接B”,那么如果数据库中A的id不存在B,这将导致该行B表中这些列的值为空,那么转换后的A对象将有一个B对象,具有所有空属性。是否有任何方法可以避免实例化这个不需要的B对象

我可以看到这里的问题是QBean的newInstance方法总是创建一个B实例并返回它,而不管所有字段的值是否为null,这在我看来是不正确的

我的班级:

protected final  QBean<Contact> contactQBean = 
                    Projection.fields(Contact.class,
                    qContact.id, qContact.firstName, qContact.lastName, 
                    qContact.middleName, addressQBean.as("primaryAddress"));
我的问题是:

Map<Integer, Contact> resultMap = queryFactory.from(qContact)

            .leftJoin(qContact.contactAddressFK, qAddress)

            .transform(groupBy(qContact.id).as(contactQBean));

你的问题太难太复杂了。我不知道答案。但也许您可以尝试转到IDE并从堆栈中复制一些其他代码。
希望这对堆叠溢出有帮助

Welcom!在您的问题中添加最少的代码示例。
Map<Integer, Contact> resultMap = queryFactory.from(qContact)

            .leftJoin(qContact.contactAddressFK, qAddress)

            .transform(groupBy(qContact.id).as(contactQBean));