Как сопоставить результирующий набор с указанными c столбцами запроса JPQL с динамическими c проекциями на объект - PullRequest
0 голосов
/ 01 апреля 2020

Я запрашиваю базу данных, используя jpql, и мой запрос генерируется динамически, то есть как проекции, так и предикаты. Однако я не могу сопоставить результирующий набор для получения правильного JSON ответа.

Entitlement Entity

@Entity
public class Entitlement{
    @Id
    @GenetedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @Column(name = "license_id")
    private String licenseId;
    @Column(name = "customer_id")
    private String customerId;
    @OneToOne
    @JoinColumn(name="product_uuid")
    private Product product;

    //setter getters and constructors
}

Product Entity

    @Entity
    public class Product{
    @Id
    @GenetedValue(strategy = GenerationType.AUTO)
    @Column(name="product_uuid")
    private Integer id;
    @Column(name = "isbn")
    private String isbn;
    @Column(name = "title")
    private String name;

    //setter getters and constructors
}

EntitlementDaoImpl. java

    Query query = entityManager.createQuery("select e.customerId,e.licenseId,p from Entitlement 
                  e,Product p where e.product_uuid = p.product_uuid");
    List<Entitlement> list = query.getResultList();
    return list;

JSON Ответ получен:

    [
        "customer101",
        "license123",
        "product": {
            "id":201
            "isbn":"abvhgfdWDMNB"
            "name":"sample_book"
         }
    ]

Ожидается JSON:

    [
        "customerId":"customer101",
        "licenseId":"license123",
        "product": {
            "id":201
            "isbn":"abvhgfdWDMNB"
            "name":"sample_book"
         }
    ]
...