в моем приложении Spring я хочу обновить запись в базе данных и увидеть это: hibernate не может разрешить свойство - PullRequest
0 голосов
/ 03 сентября 2018

Мне нужно обновить запись в базе данных и попробовать использовать этот код, но я вижу эту ошибку: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: company_id_active of: account.User [update account.User h set h.company_id_active =: ActiveCompanyId where h.user_id =:userId]

User.java

@ManyToOne
    @JoinColumn(name = "company_id_active")
    @JsonManagedReference
    private Company companyActive;
    ...
    Geter,Seter

UserRepositoryImpl.java

public boolean updateActiveCompanyID(int userId, int ActiveCompanyId) {
        try {


            String SQL= "update User h set h.company_id_active =: ActiveCompanyId where h.user_id =:userId";

            Query query = entityManager.createQuery(SQL);
            query.setParameter("ActiveCompanyId", ActiveCompanyId);
            query.setParameter("userId", userId);
            query.executeUpdate();

            return true;
        } catch (Exception ex) {
            MyLogger.logException(ex);
            return false;
        }
    }

Home.java

....
userRepository.updateActiveCompanyID(49,11);
....

1 Ответ

0 голосов
/ 03 сентября 2018

на entityManager.createQuery(SQL) вы создаете HQL-запрос, а не собственный запрос. Вы должны использовать имя поля, соответствующее определению в пользовательском классе . поэтому вместо использования company_id_active в строке запроса следует использовать companyActive как:

String SQL= "update User h set h.companyActive= :ActiveCompanyId where h.user_id =:userId";

  • А также убедитесь, что user_id также является именем вашего поля в классе.

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