Java 如何将Mysql中的位类型映射到hibernate?

Java 如何将Mysql中的位类型映射到hibernate?,java,mysql,hibernate,jsp,servlets,Java,Mysql,Hibernate,Jsp,Servlets,我在课堂上使用逆向工程,得到如下结果: @Entity @Table(name = "user", catalog = "bytecode", uniqueConstraints = @UniqueConstraint(columnNames = "email")) public class User implements java.io.Serializable { private Integer id; private String email; private S

我在课堂上使用逆向工程,得到如下结果:

@Entity
@Table(name = "user", catalog = "bytecode", uniqueConstraints =
@UniqueConstraint(columnNames = "email"))
public class User implements java.io.Serializable {

    private Integer id;
    private String email;
    private String password;
    private boolean type;
数据库:

CREATE TABLE  `bytecode`.`user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `type` bit(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
但我不想在属性“type”中设置“true”或“false”,而是设置1或0。 在hibernate中我怎么做

致以最良好的祝愿,
Valter Henrique。

您必须在MySQL中将其作为
类型吗?最简单的解决方案是将MySQL中的数据类型更改为
tinyint(1)

否则,您应该能够使用注释将实体类型映射到整数;对此不确定,必须查找

...
@Column(nullable=false)
@Type(type="org.hibernate.type.BooleanType")
private short type;

Hibernate为这种映射提供了一种特殊的
numeric\u boolean
类型。您可以按如下方式对其进行配置:

@Type(type = "numeric_boolean")
private boolean type;  
另请参见:


    • 表明这是一个bug。建议跳过它是明智的。当然,你不能告诉DBA不要在MySQL中使用bit列,这意味着我们需要使用MySQL的更高版本(<5.0.3),或者根本不使用MySQL的bit+Hibernate。

      我也遇到了类似的问题。以下Java映射解决了我的问题:

      @Column(name = "columnName", columnDefinition="BIT")
      private Boolean columnVariable;
      

      我想在MySql中改变这一点,但不是在DBA中,所以我认为最好在hibernate中改变,然后在数据库中要求改变。我会试试你的方法。布尔。。。危险的包装:如果未初始化,则定义为null。在生产环境中引发异常的一些测试糟糕的代码中遇到了很多问题。