Я пытаюсь обновить Hibernate 3.6.5 до 4.0 (и с Spring 3.0.5 до 3.1, что требуется для поддержки Hibernate 4).
Теперь, с MySQL и HSQL, я сталкиваюсь с этой проблемой с постоянными логическими полями:
Caused by: org.hibernate.HibernateException:
Wrong column type in PUBLIC.PUBLIC.EVENT for column Checked. Found: bit, expected: boolean
at org.hibernate.mapping.Table.validateColumns(Table.java:282)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1268)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:453)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:184)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:314)
JPA @Entity
и @Column
аннотации используются в объектах домена, а проблемные поля выглядят так:
@Column(name = "Checked")
private boolean checked;
Схема HSQL:
Checked bit default 0 not null,
Схема MySQL:
`Checked` tinyint(1) NOT NULL default '0',
Какой самый простой способ решить эту проблему, придерживаясь Hibernate 4 ? Стоит ли менять схему базы данных, конфиги Hibernate или аннотации классов домена?
Понятия не имею, если код и конфигурация были полностью "правильными" раньше, но по крайней мере он работал нормально с Hibernate 3.