【问题标题】:Is there a way in QueryDSL to use JsonProperty Names in the query string instead of field namesQueryDSL 中有没有办法在查询字符串中使用 JsonProperty 名称而不是字段名称
【发布时间】:2021-07-23 10:26:54
【问题描述】:

首次创建实体类时,它们在 JPA 中建模以匹配数据库字段名称。对于我们的其余端点,我们使用 JsonProperty 让 Jackson 自动映射客户期望它们是 kabob 案例的名称。然而,我们现在正在实现搜索功能并使用 QueryDSL 构建它。只要我们使用内部字段名称,它就可以正常工作。

我们要做的是接受带有 JsonProperty 名称的查询字符串。

喜欢:campaign-grouping-code=123 vs groupingCode=123

我假设它可能必须在生成的 Q 类中完成,但找不到太多关于它们的文档。

@Column(name = "GROUPING_CODE")
private String groupingCode;

@JsonProperty("campaign-grouping-code")
@NotBlank(message = "1", groups = CampaignFieldCheck.class)
@Size(max = 40, message = "100", groups = CampaignFieldCheck.class)
public String getGroupingCode() {
    return groupingCode;
}

public void setGroupingCode(String groupingCode) {
    this.groupingCode = groupingCode;
}

【问题讨论】:

  • 请附上您尝试做的实体代码。

标签: json spring rest querydsl


【解决方案1】:

很简单:不,这是不可能的,因为 Spring Data 端点使用元模型中属性的值,在 querydsl-jpa 的情况下,它始终是 JPA 属性名称,而这些名称又是从字段名称派生的, 而- 不是 Java 字段名称中的有效字符。

【讨论】:

  • 我希望情况并非如此。我想我要做的是将内部字段名称重命名为外部骆驼大小写而不是 kabob。
【解决方案2】:

所以没有办法让 jsonproperty 名称起作用。有一种解决方法别名。在此链接中,您可以找到黑名单和白名单设置。别名会自动列入白名单。但是别名可以通过对字段名称有意义的任何文本字符串进行映射。

https://gt-tech.bitbucket.io/spring-data-querydsl-value-operators/README.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多