gpt4 book ai didi

java - 使用 Play Framework 查询无需我询问即可带回相关表

转载 作者:行者123 更新时间:2023-12-04 05:04:58 25 4
gpt4 key购买 nike

我在 Play Framework 中有以下模型。

@Entity
public class Parent extends Model {

@Id
public Long id;
public String name;
public List<Child> children = new ArrayList<Child>();

}

@Entity
public class Child extends Model {

// Entity 2
@Id
public Long id
public String name;
@ManyToOne
public Parent parent;

}

执行以下查询为我提供了比我需要的更多的信息。
 toJson(Child.find.all());

例如,我获取所有 child 以及他们的 parent 和 parent 的属性以及任何其他相关信息。

我试过设置 fetch=FetchType.LAZY ,但这没什么区别。

任何人都可以帮忙吗?

最佳答案

Ebean 内置了 JSON 支持,如果您想精确控制要包含在 JSON 中的对象图部分,您可以使用它:

JsonContext jsonContext = Ebean.json();
JsonWriteOptions options = JsonWriteOptions.parsePath("id,name");
String json = jsonContext.toJson(list2, options);

或者,您可以将 PathProperties 应用于查询和 json,例如:
PathProperties pathProperties = PathProperties.parse("id,name");
query.apply(pathProperties);
// fetch only id and name
List<App> list3 = query.findList();

// json output only id and name
JsonWriteOptions options2 = new JsonWriteOptions();
options2.setPathProperties(pathProperties);
String json2 = jsonContext.toJson(list3, options2);

请注意,Ebean 4.3 对其 json 支持进行了重构,以使用 Jackon 核心进行解析和生成(因此它在幕后使用 Jackson)。您正在使用 Play,因此目前停留在旧版本的 Ebean 上,因此我认为您可以使用 pathProperties.apply(query) 而不是使用 query.apply()。

关于@JsonIgnore ...显然不同的用例需要不同的JSON,这就是Ebean中存在此功能的原因(当您获得需要包含父级的用例时)
PathProperties pathProperties = PathProperties.parse("id,name,parent(id,name)");
...

关于java - 使用 Play Framework 查询无需我询问即可带回相关表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641762/

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