2011-04-06 15 views
8

benim sınıfında ters ENGENEERING kullanmak ve bu olsun:Mysql'de nasıl bir bit haritası eşleştirilir?

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

Veritabanı:

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; 

Ama 'gerçek' ya da benim özelliğinde 'yanlış' set istemiyoruz 'türü 'ama 1 veya 0 Bunu hazırda nasıl yapabilirim?

Saygılarımızla, Valter Henrique.

cevap

2

MySQL'te bit türüne sahip olmak zorunda mısınız? En kolay çözüm, veri tipini MySQL'de tinyint(1) olarak değiştirmek olacaktır. Aksi

ek açıklamalar kullanarak bir tamsayı için varlık türünü eşleştirmek için mümkün olmalıdır; Bu konuda emin değil , o kadar bakmak zorunda

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

i hazırda değiştirmek daha iyi o zaman veritabanında değiştirmek istiyoruz olduğunu düşünüyorum bu yüzden MySql Bunu değiştirmek ister, ama DBA olacaktır. Yaklaşımınızı deneyeceğim. –

+0

çalışmıyor. –

6

hazırda haritalama bu tür özel numeric_boolean türü vardır. aşağıdaki gibi yapılandırabilirsiniz:

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

Ayrıca bakınız:

2

Benzer bir sorunla karşılaştım. Java aşağıdaki haritalama sorunumu çözdü:

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

Boolean ... tehlikeli bir sarıcı: başlatılmamışsa null olarak tanımlanır. Üretim ortamında istisna atıyor bazı kötü test kodu ile bir sürü sorun vardı. – jpfreire

İlgili konular