package org.example.service; import java.util.List; import org.example.domain.Contact; import org.example.domain.Customer; import org.example.domain.Order; import com.avaje.ebean.Ebean; import com.avaje.ebean.Query; import com.avaje.ebean.text.PathProperties; import com.avaje.ebean.text.json.JsonContext; public class ExampleUsingPathProperties extends LoadAgentAtRuntime { public static void main(String[] args) { // new ExampleUsingPathProperties().runExample(); new ExampleUsingPathProperties().runExampleUsingOrders(); } public void runExample() { LoadExampleData.load(); List<Customer> list2 = Customer.find .query() .select("name") .fetch("contacts") .findList(); PathProperties pathProperties = PathProperties.parse("(id,version,name,contacts(id,email,version))"); Query<Customer> query = Customer.find.query(); pathProperties.apply(query); List<Customer> list = query.findList(); JsonContext jsonContext = Customer.find.db().json(); String jsonString = jsonContext.toJson(list); System.out.println(jsonString); for (Customer customer : list2) { customer.getName(); List<Contact> contacts = customer.getContacts(); if (contacts != null) { for (Contact contact : contacts) { System.out.println("contact: "+contact.getFirstName()+" "+contact.getLastName()); } } } } public void runExampleUsingOrders() { LoadExampleData.load(); PathProperties pathProperties = PathProperties.parse("(id,status,orderDate,customer(id,name),details(*,product(sku)))"); Query<Order> query = Ebean.createQuery(Order.class); pathProperties.apply(query); List<Order> orders = query.where().gt("id", 1).findList(); String rawJson = Ebean.json().toJson(orders); System.out.println(rawJson); } }