2016-03-02 2 views
0

После выполнения некоторого рефакторинга двигающегося несколько классов в разные пакеты, я начал видеть следующее сообщение об ошибке во время запросов к базе данных с критериями застройщиком:Изменение имени пакета Hibernate управляемых объектов

java.lang.IllegalArgumentException: Parameter value [[email protected]] did not match expected type [in.helpi.ironlegion.cerebro.db.hibernate.entity.UserEntity 

Если изменить имя пакета обратно в .helpi.ironlegion.cerebro.db.hibernate.entity работает отлично.

Обновление Я могу правильно выбрать отдельные объекты. Но когда я отправляюсь на запросы объектов, ссылающихся на другой объект, я получаю эту ошибку. Например:

public class CommunityAccessEntity extends BaseEnity { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE) 
    private Long id; 


    @ManyToOne 
    @JoinColumn(name = "UserEntity_id") 
    private UserEntity userEntity; 
... 
} 

Если я запрашиваю его пользователем с использованием критериев строитель как:

query.select(root).where(criteriaBuilder.equal(root.get(CommunityAccessEntity_.userEntity), user))); 

Я получаю вышеуказанную ошибку.

ли кто-то также сталкиваются с подобными проблемами ..

ответ

1

Вы должны быть реализованы Serializable интерфейс в классах сущностей, как это один из правил большого пальца класса сущностей.

Сериализация Java тесно связана с именем класса и именем пакета. Ваши данные хранятся в базе данных с вашим старым объектом пакета. Теперь вы изменили имя пакета, и система не сможет найти записи в БД с вашим новым пакетом. Вот почему, когда вы восстанавливаете пакет, он работает.

Если вы используете xml-конфигурацию для hbm, проверьте файлы hbm, обновлен ли новый пакет во всех местах.

+0

Да Я использую интерфейс Serializable. Но почему я могу правильно получить старые объекты из базы данных, и только когда я иду на запрос, это дает мне исключение типа несоответствия? Я использую установку на основе аннотаций, и мой файл сохранения имеет правильные имена пакетов для сущностей. – akshay202

+0

@ akshay202, пожалуйста, проверьте свои файлы hbm, обновляется ли новый пакет во всех местах. – logztechstuff

+0

У меня нет файлов hbm, я использую подход, основанный на аннотациях. – akshay202

Смежные вопросы