簡體   English   中英

如何將Mysql中的位類型映射到hibernate?

[英]How map a bit type in Mysql to hibernate?

我在班上使用逆向工程並得到這個:

@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。

Hibernate對這種映射有一個特殊的numeric_boolean類型。 您可以按如下方式配置它:

@Type(type = "numeric_boolean")
private boolean type;  

也可以看看:

我遇到了類似的問題。 Java中的以下映射解決了我的問題:

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

你必須把它作為MySQL中的bit類型嗎? 最簡單的解決方案是將MySQL中的數據類型更改為tinyint(1)

否則,您應該能夠使用注釋將實體類型映射到整數; 不確定,不得不查閱

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

http://bugs.mysql.com/bug.php?id=28422表明這是一個錯誤。 http://www.xaprb.com/blog/2006/04/11/bit-values-in-mysql/建議跳過它是明智的。 但是當然你不能告訴DBA不要在MySQL中使用一點列 - 這意味着要么我們需要使用舊版本的MySQL(<5.0.3),要么根本不使用MySQL的bit + Hibernate。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM