[英]QueryDSL Generated classes not able to access second level elements for querying
我在我的 Java 項目中使用帶有 Spring Data JPA 的 QueryDSL,並使用 QueryDSL maven 插件生成文件來使用它生成的 QueryDSL 模型類。 當我將它用於一級嵌套對象時,這很有效,但是如果我嘗試訪問二級訪問對象,它會給出 NullPointerException 保存二級模型對象未初始化。
希望得到一些幫助。
我在第 3 行 qmachine.vendor 中收到 NullPointerException 為空。
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;
}
而 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;
}
供應商類是
@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
由於存在無限循環的可能性,最終字段無法進行完全深度初始化,但 Querydsl 還提供了屬性訪問器方法的選項。
http://www.querydsl.com/static/querydsl/2.2.4/reference/html/ch03s02.html
您需要在Transaction.machine
屬性上使用@QueryInit("vendor.vendor")
@Entity
@Table(name = "dsdsd")
public class Transaction extends AbstractPersistable<Long> {
private static final long serialVersionUID = 1L;
@ManyToOne
@JoinColumn(name = "machine_id")
@QueryInit("vendor.vendor")
private Machine machine;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.