Как сопоставить битовый тип в Mysql с Hibernate? - PullRequest
8 голосов
/ 06 апреля 2011

Я использую обратное проектирование в своем классе и получаю это:

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

Но я не хочу устанавливать «true» или «false» в моем атрибуте «type», но 1 или 0. Как я могу сделать это в спящем режиме?

С наилучшими пожеланиями, Вальтер Энрике.

Ответы [ 4 ]

6 голосов
/ 06 апреля 2011

Hibernate имеет специальный тип numeric_boolean для этого вида картирования. Вы можете настроить его следующим образом:

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

Смотри также:

2 голосов
/ 08 октября 2015

У меня была похожая проблема.Следующее отображение в Java решило мою проблему:

@Column(name = "columnName", columnDefinition="BIT")
private Boolean columnVariable;
2 голосов
/ 06 апреля 2011

Вы должны иметь его как тип bit в MySQL? Самым простым решением было бы изменить тип данных в MySQL на tinyint(1).

В противном случае вы сможете отобразить тип вашей сущности на целое число, используя аннотации; Не уверен насчет этого, надо посмотреть

...
@Column(nullable=false)
@Type(type="org.hibernate.type.BooleanType")
private short type;
0 голосов
/ 17 января 2013

http://bugs.mysql.com/bug.php?id=28422 предполагает, что это ошибка. http://www.xaprb.com/blog/2006/04/11/bit-values-in-mysql/ предполагает, что было бы разумно пропустить это. Но, конечно, вы не можете сказать администратору базы данных не использовать битовый столбец в MySQL - это означает, что нам нужно либо использовать более старую версию MySQL (<5.0.3), либо вообще не использовать бит MySQL + Hibernate. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...