Hibernate: QuerySyntaxException: AlertToEmployee.alert не отображается - PullRequest
0 голосов
/ 18 октября 2019

Я хочу создать запрос на соединение с двумя классами Alert и AlertToEmployee,

Класс Alert:

public class Alert  {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String object;
    @Column(name = "is_deleted")
    private Boolean isDeleted = false;
}

Класс AlertToEmployee

public class AlertToEmployee {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Enumerated(EnumType.STRING)
    private TypeAffectation typeAffectation;
    private String registrationNumber;
    private boolean isDeleted;
    @ManyToOne
    private Alert alert;
}

Я создаю внутреннийприсоединиться к запросу, чтобы иметь оповещения с конкретными условиями, но я не знаю, что имеет значение с сопоставлением, у меня есть эта ошибка: QuerySyntaxException: AlertToEmployee.alert is not mapped

Запрос:

@Query( "SELECT new com.demo.shared.vo.AlertsVO(a.id,a.object  )" +
        "FROM  AlertToEmployee.alert a INNER JOIN  AlertToEmployee ate   ON a.id = ate.id WHERE a.isDeleted = false" +
        "  AND ate.registrationNumber = ?1 AND ate.isDeleted = false ")

Я пыталсятакже это, но это не работает тоже:

@Query( "SELECT new com.demo.shared.vo.AlertsVO(a.id,a.object  )" +
        "FROM  Alert a INNER JOIN  AlertToEmployee ate   ON a.id = ate.id WHERE a.isDeleted= false" +
        "  AND ate.registrationNumber = ?1 AND ate.isDeleted = false ")

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 18 октября 2019

Вам не нужно делать ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Вот как должен выглядеть ваш запрос:

@Query("SELECT new com.demo.shared.vo.AlertsVO(ate.alert.id, ate.alert.object) " +
       "FROM  AlertToEmployee ate " +
       "WHERE ate.registrationNumber = ?1 AND ate.alert.isDeleted = false")

Подробнее о запросах см. В документации:

https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#hql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...