小编Jac*_*ith的帖子

列类型的奇怪Hibernate异常

我得到Hibernate异常:

错误的列类型.发现:位,预期:BOOLEAN DEFAULT TRUE

我有班级用户:

package mypackage;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "USER")
public class User {

   @Id
   @GeneratedValue
   @Column(name = "ID", unique = true, nullable = false)
   private Long id;

   @Column(name = "STATUS", columnDefinition = "BOOLEAN DEFAULT TRUE", 
                               nullable = false)
   private Boolean status = Boolean.TRUE;

   // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

如果Hibernate在数据库中创建表本身,这可以正常工作.什么时候

<property name="hibernate.hbm2ddl.auto">create</property>
Run Code Online (Sandbox Code Playgroud)

要么

<property name="hibernate.hbm2ddl.auto">create-drop</property>
Run Code Online (Sandbox Code Playgroud)

但如果

  1. 我运行我的程序并允许Hibernate创建此表
  2. 然后我将值更改hibernate.hbm2ddl.auto验证
  3. 然后我用Hibernate生成的表再次运行我的程序

    <property name="hibernate.hbm2ddl.auto">validate</property>
    
    Run Code Online (Sandbox Code Playgroud)

所以我得到了例外:

org.hibernate.HibernateException:dbtest.user中列STATUS的列类型错误.发现:位,预期:BOOLEAN DEFAULT TRUE

任何想法Hibernate的这种行为的原因是什么,我该如何解决它?

我用MySQL server 5.1 …

java hibernate hibernate-mapping hibernate-annotations

5
推荐指数
1
解决办法
3439
查看次数