gpt4 book ai didi

java - QueryDSL 生成的类无法访问二级元素进行查询

转载 作者:IT老高 更新时间:2023-10-28 13:46:31 27 4
gpt4 key购买 nike

我在我的 Java 项目中使用带有 Spring Data JPA 的 QueryDSL,并使用 QueryDSL maven 插件生成文件以使用它生成的 QueryDSL 模型类。当我将它用于一级嵌套对象时,这很有效,但是如果我尝试访问二级访问对象,它会给出一个 NullPointerException 保存二级模型对象未初始化。

不胜感激。

我在第 3 行收到 NullPointerException qmachine.vendor is null。

QTransaction qtransaction = QTransaction.transaction;
QMachine qmachine = qtransaction.machine;
BooleanExpression vendorexp = qmachine.vendor.vendor.eq(machineType);

我的映射类如下:交易

@Entity
@Table(name = "dsdsd")
public class Transaction extends AbstractPersistable<Long> {

private static final long serialVersionUID = 1L;

@ManyToOne
@JoinColumn(name = "machine_id")
private Machine machine;

}

机器类是:

@Entity
@Table(name="machine")
public class Machine extends AbstractPersistable<Long> {

private static final long serialVersionUID = 1L;

@ManyToOne
@JoinColumn(name="vendor_id")
private Vendor vendor;
}

Vendor 类是

@Entity
@Table(name="vendors")
public class Vendor extends AbstractPersistable<Long> {

private static final long serialVersionUID = 1L;

@Column(name="vendor")
@Enumerated(EnumType.STRING)
private VendorType vendor;

}

我故意省略了 getter 和 setter。

最佳答案

默认情况下只有第一层被初始化。有关初始化选项,请参阅此文档部分:http://www.querydsl.com/static/querydsl/3.6.0/reference/html/ch03s03.html#d0e2192

由于可能存在无限循环,因此无法对 final 字段进行完全深度初始化,但 Querydsl 还提供了属性访问器方法的选项。

关于java - QueryDSL 生成的类无法访问二级元素进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com