Проблема с выводом информации

Не могу решить данную проблему уже продолжительное время, нужна помощь. С помощью запроса, который находится в service хочу вывести одно поле из таблицы Car и одно поле из таблицы Model. Данные таблицы связаны.

Если попробовать вывести информацию только из Car

 Query query = session.createQuery("From Car");

то получу те поля, которые мне нужны, а вот если из связных таблиц - нет... Как исправить данную ситуацию?

Сущность Car:

package by.it.academy.entity;

import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import javax.persistence.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "CAR")
public class Car {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "PRICE")
    @NotNull
    private int price;
    @Column(name = "DATE")
    private int date;
    @Column(name = "VIN")
    @NotNull
    private String VIN;

    @ToString.Exclude
    @JoinColumn(name = "MODEL_ID")
    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    Model model;
}

Сущность Model:

package by.it.academy.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import javax.persistence.Access;
import java.util.ArrayList;
import java.util.List;

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "MODEL")
@Data
public class Model {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "MODEL_ID", unique = true)
    @Access(AccessType.PROPERTY)
    private Long modelId;

    @Column(name = "NAME")
    private String name;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "MARK_ID")
    private Mark mark;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "MODEL_ENGINE", joinColumns = {@JoinColumn(name = "MODEL_ID")},
            inverseJoinColumns = {@JoinColumn(name = "ENGINE_ID")})
    private List<Engine> engines = new ArrayList<>();

    @OneToOne(fetch = FetchType.LAZY, mappedBy = "model")
    @javax.persistence.Access(AccessType.PROPERTY)
    private Car car;

}

Jsp:

<form method="post" action="${pageContext.request.contextPath}/Car-list">
    <table border="1">
        <tr>
            <th>price $</th>
            <th>date</th>
        </tr>
        <c:forEach items="${modelList}" var="model">
            <tr>
                <td><c:out value="${model.price}"/></td>
                <td><c:out value="${model.date}"/></td>
                <td><input type="button" name="userName" value="заказать"/></td>
            </tr>
        </c:forEach>
    </table> </form> </body> </html>

Сервлет:

@WebServlet(urlPatterns = "/Car-list")
@Slf4j
public class ModelListServlet extends HttpServlet {

    private ModelService modelService = new ModelService();

    @SneakyThrows
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException {

        List<Car> avaliableCars = modelService.getAvaliableCars();

        log.info("cars {}", avaliableCars);

        req.setAttribute("modelList", avaliableCars);

        req.getRequestDispatcher("/WEB-INF/jsp/model-list.jsp").forward(req, resp);
    }
}

Ну и собственно service где находится метод:

@Override
    public List<Car> getAvaliableCars() throws SQLException {

        List<Car> carList = null;
        Session session = null;
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
 Query query = session.createQuery("select c.price, m.name from Car as c join c.model m on c.id=m.modelId");
            carList = query.list();

            carList.forEach(System.out::println);

            session.getTransaction().commit();

        } catch (HibernateException e) {

if (session != null) {

session.getTransaction().rollback();

                log.info("Session was rollacked " + e);
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
        return carList;
    }

Ответы (0 шт):