2011-04-06 13 views
8

나는 내 수업에 반대 engeneering을 사용하고이 얻을 :Mysql의 비트 유형을 최대 절전 모드로 매핑하는 방법은 무엇입니까?

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

하지만 '사실'또는 내 속성의 '거짓'을 설정하지 않는 '유형을 '하지만 1 또는 0입니다. 최대 절전 모드에서는 어떻게 할 수 있습니까?

안부 인사, Valter Henrique.

답변

2

MySQL에 bit 유형으로 지정해야합니까? 가장 쉬운 해결책은 MySQL의 데이터 유형을 tinyint(1)으로 변경하는 것입니다.

그렇지 않으면 주석을 사용하여 엔티티 유형을 정수로 매핑 할 수 있어야합니다. 이 확실하지 은 그것을 볼 필요가

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

내가 최대 절전 모드에서 변경 더 나은 다음 데이터베이스에 변경을 요청할 생각, 그래서 내가 MySQL의에서 그을 변경하려면 아닌 DBA에있는 것입니다. 나는 귀하의 접근 방식을 시도 할 것입니다. –

+0

작동하지 않습니다. –

6

Hibernate는 이런 종류의 매핑을위한 특별 numeric_boolean 유형이 있습니다. 다음과 같이 구성 할 수 있습니다 :

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

은 참조 :

2

비슷한 문제가있었습니다. 자바의 다음 매핑은 내 문제를 해결 :

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

부울 ... 위험한 래퍼 : 초기화되지 않은 경우 null로 정의됩니다. 프로덕션 환경에서 예외를 던지고있는 잘 테스트되지 않은 코드로 많은 문제가있었습니다. – jpfreire

관련 문제