这可能是一个非常基本的问题,但我尝试了很多东西,但却遇到了所有问题。爸爸请忽略。
案例1:
当我在hibernate.cfg.xml中提到我的映射时如下:
<mapping class="com.tm.midservice.db.dto.User"/>
<mapping class="com.tm.midservice.db.dto.Company"/>
我收到以下错误。
INFO - org.hibernate.tool.hbm2ddl.TableMetadata - table found: demodb.company
INFO - org.hibernate.tool.hbm2ddl.TableMetadata - columns: [analytics_feature_enabled, source_domain, currency, id, updated_at, source, token, name, domain, created_at, active, mid]
SessionFactory initial creation error.org.hibernate.HibernateException: Wrong column type: active, expected: bit`
我在DTO中描述的专栏如下:
@Column(name = "active")
private boolean active;
(编辑1)
尝试了下面的事情,但没有奏效:
@Type(type="true_false")
@Column(name="active", columnDefinition = "TINYINT(1) DEFAULT 0")
private boolean active;
将异常视为:
SessionFactory initial creation error.org.hibernate.HibernateException: Wrong column type: active, expected: TINYINT(1) DEFAULT 0
(编辑2)
在"Found: bit, expected: boolean" after Hibernate 4 upgrade
找到了一些东西@Column(name="active", columnDefinition = "BIT", length = 1)
private boolean active;
将异常视为:
SessionFactory initial creation error.org.hibernate.HibernateException: Wrong column type: active, expected: BIT
(编辑3)
尝试过:
public class Mysql5BitBooleanDialect extends MySQL5Dialect {
public Mysql5BitBooleanDialect() {
super();
registerColumnType( Types.BOOLEAN, "bit" );
}
}
这个类确实被调用了,但是异常没有被调用。
案例2 :
当我不在cfg文件中给出映射并尝试运行我的应用程序时,sessionFactory初始化并且所有但是当我尝试执行任何数据库操作时,我得到错误:
hibernate mapping exception unknown entity
理想情况下,我不应该提供任何映射定义,因为DTO已经获得了[@Entity & @Table (name = "User")]
的注释。
如何正确配置?我在这里遗失的任何东西?我很困惑。
答案 0 :(得分:0)
问题在于数据库表,我完全忽略了它。 TinyInt字段大小为11,更改为1解决了问题。