"Found: bit, expected: boolean" after Hibernate 4 upgrade

Я пытаюсь перейти с 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.(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.

32
задан fredt 11 July 2015 в 23:36
поделиться