Login
Как выловить ошибку маппинга Hibernate
406
NEW 08.06.13 11:54
Всем привет!
Ситуация такая - имеется таблица замапленная через маппинг-мастер эклипса (версия индиго). Использую Hibernate 3.5. Сервер БД Mysql 5.5
ПОсле автомаппинга добавлял поля руками как в базу так и в мап-класс - все прекрасно работало.
Но сейчас что то не работает.
Имеются 2 поля. Оба int 11. Оба добавлены руками
Первое поле по геттеру отдает значение второе тупо возвращает null
У обоих стоит ограничение not null
Само приложение сервлет, сервер приложений томкат 5.5
В чем причина и в какую сторону копать? В обоих полях стоит 1 в БД. Сеттер первого поля кстати тоже работает а второго нет. Проверил наименование самих полей в Бд на маленькие большие буквы - все правильно. Может есть какой то кэщ у мускуля или где еще? Приложение томката сносил, кэш томката чистил перегружал машину и сервак - сейчас все крутится локально под XP. Толку нет
Пользоваться мастером маппинга более не хочу. Руками быстрее и вообще не в восторге от хибернейтовской консоли под эклипсом.
Да и времени нет.
Ситуация такая - имеется таблица замапленная через маппинг-мастер эклипса (версия индиго). Использую Hibernate 3.5. Сервер БД Mysql 5.5
ПОсле автомаппинга добавлял поля руками как в базу так и в мап-класс - все прекрасно работало.
Но сейчас что то не работает.
Имеются 2 поля. Оба int 11. Оба добавлены руками
В ответ на:
private Integer active;
//геттер
@column (name = "Active", nullable = false)
public Integer getactive()
{
return this.active;
}
private Integer IsPassChange;
//геттер
@column (name = "Ispasschange", nullable = false)
public Integer getIsPassChange()
{
return this.IsPassChange;
}
private Integer active;
//геттер
@column (name = "Active", nullable = false)
public Integer getactive()
{
return this.active;
}
private Integer IsPassChange;
//геттер
@column (name = "Ispasschange", nullable = false)
public Integer getIsPassChange()
{
return this.IsPassChange;
}
Первое поле по геттеру отдает значение второе тупо возвращает null
У обоих стоит ограничение not null
Само приложение сервлет, сервер приложений томкат 5.5
В чем причина и в какую сторону копать? В обоих полях стоит 1 в БД. Сеттер первого поля кстати тоже работает а второго нет. Проверил наименование самих полей в Бд на маленькие большие буквы - все правильно. Может есть какой то кэщ у мускуля или где еще? Приложение томката сносил, кэш томката чистил перегружал машину и сервак - сейчас все крутится локально под XP. Толку нет
Пользоваться мастером маппинга более не хочу. Руками быстрее и вообще не в восторге от хибернейтовской консоли под эклипсом.
Да и времени нет.
NEW 09.06.13 16:55
in Antwort bars_12 08.06.13 11:54
private Integer IsPassChange;
//геттер
@column (name = "Ispasschange", nullable = false)
Я хайбернэйт только издалека видел, но это нормально, что
Klein-grossschreibung nicht stimmt?
//геттер
@column (name = "Ispasschange", nullable = false)
Я хайбернэйт только издалека видел, но это нормально, что
Klein-grossschreibung nicht stimmt?
NEW 10.06.13 21:42
очень даже штимт.
Потому что поле таблицы это одно а переменная это другое.
В принципе имя поля может быть любым и с его (поля) маппингом и не должно совпада - именно для этого и придуман тэг Columnname.
Если такового тэга и того что в скобках нет то конечно имя поля должно совпадать с переменной. Но так обычно не делают.
in Antwort yabs 09.06.13 16:55
В ответ на:
Klein-grossschreibung nicht stimmt?
Klein-grossschreibung nicht stimmt?
очень даже штимт.
Потому что поле таблицы это одно а переменная это другое.
В принципе имя поля может быть любым и с его (поля) маппингом и не должно совпада - именно для этого и придуман тэг Columnname.
Если такового тэга и того что в скобках нет то конечно имя поля должно совпадать с переменной. Но так обычно не делают.
NEW 11.06.13 22:02
in Antwort bars_12 10.06.13 21:39, Zuletzt geändert 11.06.13 22:05 (Victor!)
как-бе www.iwombat.com/standards/JavaStyleGuide.html#Attribute%20and%20Local%20V...
getactive - тоже не в кассу
и почему сетторов нету?
getactive - тоже не в кассу
и почему сетторов нету?
NEW 12.06.13 12:37
in Antwort Victor! 11.06.13 22:02
14.06.13 12:11
in Antwort Roanuk 12.06.13 12:37
Всем спасибо. Необходимость в поле отпала - буду через поле даты работать.
Но все равно буду пробовать. А чем getactive не катит то - да булеан поле но с булеаном в мускуле все плохо - выбрал числовое. Не есть конечно хорошо но работает.
Сеттеры не приводи поскольку просто не нужны - но в целом все ок - сеттер сетактив вполне работоспособен
Но все равно буду пробовать. А чем getactive не катит то - да булеан поле но с булеаном в мускуле все плохо - выбрал числовое. Не есть конечно хорошо но работает.
Сеттеры не приводи поскольку просто не нужны - но в целом все ок - сеттер сетактив вполне работоспособен
NEW 14.06.13 20:52
Переименуйте в isPassChange (с маленькой i). Должно помочь. getIsPassChange() метод не соответсвует Java Beans конвенции (впрочем как и getactive() :)).
getAbc() и setAbc() - для переменной abc. Первая буква имени переменной в геттере и сеттере становится прописной.
Очень может быть что хибернейт видит определение колонки на методе getIsPassChange() и пытается найти переменную isPassChange. В общем, я бы попробовал переименовать.
Кстати, а зачем Integer используете? Почему не int? (вернее так, почему не boolean? можно и для колонки columnDefinition="TINYINT(1)" прописать)
in Antwort bars_12 08.06.13 11:54, Zuletzt geändert 14.06.13 20:56 (MrSanders)
В ответ на:
private Integer IsPassChange;
private Integer IsPassChange;
Переименуйте в isPassChange (с маленькой i). Должно помочь. getIsPassChange() метод не соответсвует Java Beans конвенции (впрочем как и getactive() :)).
getAbc() и setAbc() - для переменной abc. Первая буква имени переменной в геттере и сеттере становится прописной.
Очень может быть что хибернейт видит определение колонки на методе getIsPassChange() и пытается найти переменную isPassChange. В общем, я бы попробовал переименовать.
Кстати, а зачем Integer используете? Почему не int? (вернее так, почему не boolean? можно и для колонки columnDefinition="TINYINT(1)" прописать)