[英]Q class not generating by query-dsl for nested embedded objects inside document class in spring data
I have below collection and embedded documents我有以下收藏和嵌入式文件
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Document(collection = "person_details")
public class PersonDetails {
@MongoId(FieldType.OBJECT_ID)
private String managerId;
.
.
@QueryInit("addressDetails.*")
private List<ContactDetails> contactDetails;
.
}
And ContactDetails.java looks like below: ContactDetails.java 如下所示:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ContactDetails {
private AddressDetails addressDetails;
private StateDetails stateDetails;
}
StateDetails look like below: StateDetails 如下所示:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Document(collection = "statedetails")
public class StateDetails {
@MongoId(FieldType.OBJECT_ID)
private String stateId;
private String stateName;
}
And AddressDetails look like below: AddressDetails 如下所示:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AddressDetails {
private String address;
@Field(targetType = FieldType.STRING)
private AddressTypeEnum addressType;
}
After building, I am not getting Q class for AddressDetails, due to which I am facing issues in building Predicate.构建后,我没有收到 AddressDetails 的 Q class,因此我在构建 Predicate 时遇到问题。 Below is my generated QPersonDetail class
下面是我生成的 QPersonDetail class
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QPersonDetails extends EntityPathBase<PersonDetails> {
private static final long serialVersionUID = 184263140L;
private static final PathInits INITS = new PathInits("*", "contactDetails.addressDetails.*");
public static final QPersonDetails managerDetails = new QPersonDetails("managerDetails");
public final ListPath<ContactDetails, QContactDetails> contactDetails = this.<ContactDetails, QContactDetails>createList("contactDetails", ContactDetails.class, QContactDetails.class, INITS.get("contactDetails"));
public QPersonDetails(String variable) {
this(PersonDetails.class, forVariable(variable), INITS);
}
public QPersonDetails(Path<? extends PersonDetails> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QPersonDetails(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QPersonDetails(PathMetadata metadata, PathInits inits) {
this(PersonDetails.class, metadata, inits);
}
}
And below is generated QContactDetails:下面是生成的 QContactDetails:
@Generated("com.querydsl.codegen.DefaultEmbeddableSerializer")
public class QContactDetails extends BeanPath<ContactDetails> {
private static final long serialVersionUID = 1039545873L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QContactDetails contactDetails = new QContactDetails("contactDetails");
public final SimplePath<AddressDetails> addressDetails = createSimple("addressDetails", AddressDetails.class);
public QContactDetails(String variable) {
this(ContactDetails.class, forVariable(variable), INITS);
}
public QContactDetails(Path<? extends ContactDetails> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QContactDetails(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QContactDetails(PathMetadata metadata, PathInits inits) {
this(ContactDetails.class, metadata, inits);
}
}
I referred many threads including https://querydsl.com/static/querydsl/5.0.0/reference/html/ch03s03.html but still not able to figure out issue.我提到了许多线程,包括https://querydsl.com/static/querydsl/5.0.0/reference/html/ch03s03.html但仍然无法找出问题。 Even i tried with
即使我试过
@QueryInit("*.*")
annotation on contactDetails, above. contactDetails 上面的注释。 Any idea, where I am missing.
任何想法,我失踪的地方。 I dont want AddressDetails to be annotated as @Document.
我不想将 AddressDetails 注释为 @Document。
I found this thread Querydsl 4 StringExpression of a field inside a SimplePath This solves theproblem, but I am still confused with the concept, how @QueryEmbeddable works我发现这个线程Querydsl 4 StringExpression of a field inside a SimplePath这解决了问题,但我仍然对这个概念感到困惑,@QueryEmbeddable 是如何工作的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.