Написание запроса в Hibernate в репозитории и на сервисе - PullRequest
0 голосов
/ 03 марта 2019

У меня есть 2-запрос, который мне нужно добавить в Hibernate.

 1-ALTER TABLE ccpt_data.project_employee drop CONSTRAINT
 ck_pe_overlap;
 2-ALTER TABLE ccpt_data.project_employee  ADD
 CONSTRAINT ck_pe_overlap CHECK (check_periods_overlap(employee_id,
 project_id,start_date, end_date)=CAST (0 AS BIT));

В репозитории я выполнил этот тип запроса, если его можно назвать так, но проблема в том, что использование alter - это мойв первый раз, потому что обычно мы используем только выбрать в хранилище.У меня нет примера, чтобы увидеть что-то подобное:

public static final String DROP_CONSTRAINT = "ALTER TABLE "
                                                       + " ProjectEmployee "
                                                       + "drop CONSTRAINT ck_pe_overlap";
    public static final String ADD_CONSTRAINT = "ALTER TABLE "
                                                    + " ProjectEmployee"
                                                    + "CHECK (check_periods_overlap(employee_id, project_id,start_date, end_date)=CAST "
                                                    + "(0 AS BIT))";
        @Query(DROP_CONSTRAINT)
        public ProjectEmployee dropConstraint();
        @Query(ADD_CONSTRAINT)
        public ProjectEmployee addConstraint();

и на службе у меня есть:

public void dropConstraint() {
    projectEmployeeRepository.dropConstraint();

}

/* from the service i call this  @Query(DROP_CONSTRAINT)
            public ProjectEmployee dropConstraint(); and this one is relation with query i need but i think is not correct cause i test it and is not working*/


public void addConstraint() {
    projectEmployeeRepository.addConstraint();
}

И у меня есть исключениеэто и только для первого запроса, потому что я закомментировал второй, но это происходит так же:

Caused by: java.lang.IllegalArgumentException:   
 Validation failed for query for method public abstract com.xitee.ccpt.entity.ProjectEmployee com.xitee.ccpt.repository.ProjectEmployeeRepository.dropConstraint()!
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:87).
Caused by: java.lang.IllegalArgumentException: node to traverse cannot be null!

Кто-нибудь имеет какие-либо идеи, как я могу исправить или что не так с моим кодом?

служба хранилище

1 Ответ

0 голосов
/ 03 марта 2019

Просто взгляните на javadoc Query аннотации .Поле value является запросом JPA.Это означает, что вы не можете удалить ограничение с ним, вам придется использовать собственный запрос, например:

SQLQuery query = session.createSQLQuery("your drop goes here"); 

Метод должен выглядеть следующим образом:

public void dropConstraint() {
    session.createSQLQuery(DROP_CONSTRAINT).executeUpdate();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...