2

我为android应用程序创建了一个具有以下字段的bean

@DatabaseField(generatedId=true)
private int id;
@DatabaseField
private String name;
@DatabaseField(unique=true)
private String emailId;
@DatabaseField
private String mobile;
@DatabaseField(unique=true)
private String loginName;
@DatabaseField
private String loginPassword;
@DatabaseField
private String confirmPassword;
@DatabaseField
private String securityQuestion;
@DatabaseField
private String securityPassword;
@DatabaseField
private String transactionPassword;
@DatabaseField
private String uac;

但是,当我在 Eclipse IDE 中使用 Questoid SQLite 管理器查看数据库表时,我看不到以与 bean 中声明的顺序相同的顺序创建的列,而是看到如下所示的内容:

CREATE TABLE user (confirmPassword VARCHAR, emailId VARCHAR, uac VARCHAR,
    loginPassword VARCHAR, mobile VARCHAR, name VARCHAR, securityPassword VARCHAR,
    transactionPassword VARCHAR id INTEGER PRIMARY KEY AUTOINCREMENT);

从可读性和调试的角度来看,这个顺序非常困难。有没有办法克服这个问题?

4

1 回答 1

1

我很惊讶这个命令。我相信这就是 Android 如何对类中的字段进行排序。 ORMLite只是遍历类中的字段。除了尝试在对象中移动字段外,我没有任何解决顺序问题的方法。然而,绝对是一个 HACK。

如果看ORMLite是如何通过JDBC在Sqlite中配置类的,可以看到直接匹配了类的顺序:

public class AllTypes {
    @DatabaseField
    String stringField;
    @DatabaseField
    boolean booleanField;
    @DatabaseField
    Date dateField;
    @DatabaseField
    byte byteField;
    @DatabaseField
    short shortField;
    @DatabaseField
    int intField;
    @DatabaseField
    long longField;
    @DatabaseField
    float floatField;
    @DatabaseField
    double doubleField;
}

这是SQL:

CREATE TABLE `alltypes` (`stringField` VARCHAR , `booleanField` BOOLEAN ,
    `dateField` TIMESTAMP , `byteField` TINYINT , `shortField` SMALLINT ,
    `intField` INTEGER , `longField` BIGINT , `floatField` FLOAT ,
    `doubleField` DOUBLE PRECISION ) 

所以这是一个Android唯一的问题。

于 2012-10-07T18:52:52.363 回答