Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как выловить ошибку маппинга Hibernate

406  
bars_12 коренной житель08.06.13 11:54
NEW 08.06.13 11:54 
Всем привет!
Ситуация такая - имеется таблица замапленная через маппинг-мастер эклипса (версия индиго). Использую 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;
}

Первое поле по геттеру отдает значение второе тупо возвращает null
У обоих стоит ограничение not null
Само приложение сервлет, сервер приложений томкат 5.5
В чем причина и в какую сторону копать? В обоих полях стоит 1 в БД. Сеттер первого поля кстати тоже работает а второго нет. Проверил наименование самих полей в Бд на маленькие большие буквы - все правильно. Может есть какой то кэщ у мускуля или где еще? Приложение томката сносил, кэш томката чистил перегружал машину и сервак - сейчас все крутится локально под XP. Толку нет
Пользоваться мастером маппинга более не хочу. Руками быстрее и вообще не в восторге от хибернейтовской консоли под эклипсом.
Да и времени нет.
#1 
  yabs коренной житель09.06.13 16:55
yabs
NEW 09.06.13 16:55 
в ответ bars_12 08.06.13 11:54
private Integer IsPassChange;
//геттер
@column (name = "Ispasschange", nullable = false)

Я хайбернэйт только издалека видел, но это нормально, что
Klein-grossschreibung nicht stimmt?
#2 
Victor! местный житель10.06.13 21:08
Victor!
NEW 10.06.13 21:08 
в ответ yabs 09.06.13 16:55
мда подозрительно большая эта "I" в самом начале
#3 
bars_12 коренной житель10.06.13 21:39
NEW 10.06.13 21:39 
в ответ Victor! 10.06.13 21:08
Для явы вполне нормальная I
#4 
bars_12 коренной житель10.06.13 21:42
NEW 10.06.13 21:42 
в ответ yabs 09.06.13 16:55
В ответ на:
Klein-grossschreibung nicht stimmt?

очень даже штимт.
Потому что поле таблицы это одно а переменная это другое.
В принципе имя поля может быть любым и с его (поля) маппингом и не должно совпада - именно для этого и придуман тэг Columnname.
Если такового тэга и того что в скобках нет то конечно имя поля должно совпадать с переменной. Но так обычно не делают.
#5 
Victor! местный житель11.06.13 22:02
Victor!
NEW 11.06.13 22:02 
в ответ bars_12 10.06.13 21:39, Последний раз изменено 11.06.13 22:05 (Victor!)
как-бе www.iwombat.com/standards/JavaStyleGuide.html#Attribute%20and%20Local%20V...
getactive - тоже не в кассу
и почему сетторов нету?
#6 
  Roanuk завсегдатай12.06.13 12:37
NEW 12.06.13 12:37 
в ответ Victor! 11.06.13 22:02
IsPassChange смахивает на boolean
переименовать в passChange
#7 
bars_12 коренной житель14.06.13 12:11
NEW 14.06.13 12:11 
в ответ Roanuk 12.06.13 12:37
Всем спасибо. Необходимость в поле отпала - буду через поле даты работать.
Но все равно буду пробовать. А чем getactive не катит то - да булеан поле но с булеаном в мускуле все плохо - выбрал числовое. Не есть конечно хорошо но работает.
Сеттеры не приводи поскольку просто не нужны - но в целом все ок - сеттер сетактив вполне работоспособен
#8 
MrSanders свой человек14.06.13 20:52
14.06.13 20:52 
в ответ bars_12 08.06.13 11:54, Последний раз изменено 14.06.13 20:56 (MrSanders)
В ответ на:
private Integer IsPassChange;

Переименуйте в isPassChange (с маленькой i). Должно помочь. getIsPassChange() метод не соответсвует Java Beans конвенции (впрочем как и getactive() :)).
getAbc() и setAbc() - для переменной abc. Первая буква имени переменной в геттере и сеттере становится прописной.
Очень может быть что хибернейт видит определение колонки на методе getIsPassChange() и пытается найти переменную isPassChange. В общем, я бы попробовал переименовать.
Кстати, а зачем Integer используете? Почему не int? (вернее так, почему не boolean? можно и для колонки columnDefinition="TINYINT(1)" прописать)
#9 
  scorpi_ постоялец14.06.13 23:24
NEW 14.06.13 23:24 
в ответ MrSanders 14.06.13 20:52
+1
#10