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 Manager を使用して DB テーブルを表示すると、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は、クラス内のフィールドを反復処理しているだけです。オブジェクト内でフィールドを移動しようとする以外に、順序の問題に対する解決策はありません。ただし、間違いなくハックです。

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 に答える