Hibernate - Simple Fetch by Id Query не работает, но Query by object делает - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть этот метод в JPARepository:

@Query("SELECT e FROM Request e JOIN FETCH e.products JOIN FETCH e.productiveShifts WHERE e.id = :id ")
Request getRequestById(@Param("id") int id);

Это Pojo на заказ:

import com.jfoenix.controls.datamodels.treetable.RecursiveTreeObject;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.Hibernate;

import javax.persistence.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;

@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "iutp_requests")
public class Request {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @ManyToOne
    private Customer customer;

    @ManyToOne
    private User user;

    private Date creationDate = new Date();

    @ElementCollection
    private Set<ProductGood> products;

    @ElementCollection
    private Set<ProductiveShift> productiveShifts;

    @Override
    public String toString(){
        if(id == 0)
            return "Ungespeicherter Auftrag";
        return "#" + id + " - " + customer.getSurname() + " " + customer.getName() + " vom " + new SimpleDateFormat("dd.MM.yyyy").format(creationDate);
    }

}

Теперь, когда я пытаюсь использовать getRequestById, запрос возвращает значение NULL. Но моя таблица содержит запрос с указанным идентификатором. Так почему мой запрос все еще возвращает ноль? Мой синтаксис неверен?

EDIT:

Для сравнения:

  @Query("SELECT e FROM Request e JOIN FETCH e.products JOIN FETCH e.productiveShifts WHERE e.customer = (:customer) ")
    List<Request> getRequestsByCustomer(@Param("customer") Customer customer);

Этот запрос работает.

...