gpt4 book ai didi

android - 使用 ORMLite 创建表期间的列未与 Bean 对齐

转载 作者:行者123 更新时间:2023-11-29 02:00:49 25 4
gpt4 key购买 nike

我已经为 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);

从可读性和调试的角度来看,这个顺序非常困难。有什么方法可以解决这个问题吗?

最佳答案

我很惊讶这个顺序。我相信这就是 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 独有的问题。

关于android - 使用 ORMLite 创建表期间的列未与 Bean 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com