能否在AFinal的DAO模块中加一个功能

发布于 2021-11-21 13:12:41 字数 176 浏览 741 评论 4

@michaely 你好,请问能否在AFinal的DAO模块中加一个功能,类的成员上加一个Annotation表明是非数据库字段,值不保存到数据库。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

青萝楚歌 2021-11-22 02:11:42

@michaely  遇到问题了,应该是AFINAL的Bug了,请教您,麻烦解答一下,很明显的,请看截图,delivered=0 的那行数据是创建后进行了一次update操作的,deliverd=fasle的那行数据只创建保存,没有经过update操作。

现在的问题是数值型的字段在首次保存的时候保存成了text(boolean类型保存是正确的),经过update操作后数值类型的又变成text类型了,但是boolean这回又变成数值了(例如下面的delivered字段)。

可以通过图中的浅绿色看出来,浅绿色是数值类型,白底是text,所用的SQLite查看软件是SQLiteSpy。

数据库创建的POJO在下面。

@SuppressWarnings("serial")
@Table(name = "orders")
public class Orders implements BaseColumns, Serializable {

	@Id(column = BaseColumns._ID)
	private int id;

	@Property(column = "gid")
	private String gid = UUIDUtil.getGid();

	@Property(column = "shop_gid")
	private String shopGid;
	
	@Property(column = "orders_type_gid")
	private String ordersTypeGid;

	@Property(column = "serial")
	private String serial = Util.createASerial();
	
	@Property(column = "alias")
	private String alias;
	
	@Property(column = "user_name")
	private String userName;
	
	@Property(column = "tol_money")
	private double tolMoney;
	
	@Property(column = "tol_favor")
	private double tolFavor;
	
	@Property(column = "tol_type")
	private int tolType;
	
	@Property(column = "tol_count")
	private int tolCount;
	
	@Property(column = "tol_bonus")
	private double tolBonus;
	
	@Property(column = "bonus_calculated")
	private boolean bonusCalculated = false;
	
	@Property(column = "oper_user_name")
	private String operUserName;
	
	@Property(column = "is_net_orders")
	private boolean isNetOrders = false;

	@Property(column = "status")
	private short status = 0;
	
	public static enum Status {
		UNCOMFIRM(0),SUSPEND(1),CHECKEDOUT(2),CANCEL_BY_CUSTOM(3),CANCEL_BY_OP(4);
		private int value;
		private Status(int status) {
			value = status;
		}
		
		public boolean equals(int status) {
			return value == status;
		}
		
		public int value() {
			return value;
		}
	}
	
	@Property(column = "delivered")
	private boolean delivered = false;
	
	@Property(column = "create_datetime")
	private long createDatetime = System.currentTimeMillis();
	
	@Property(column = "last_op_datetime")
	private long lastOpDatetime = System.currentTimeMillis();;
	
	@Property(column = "pay_type")
	private short payType = 0;
	
	@Property(column = "contact_name")
	private String contactName;

	@Property(column = "contact_tel")
	private String contactTel;
	
	@Property(column = "contact_addr")
	private String contactAddr;
	
	@Property(column = "remark")
	private String remark;
	
	/***************************************
	 * 非数据库字段 begin
	 ***************************************/
	
	@Transient
	private double mReturnFee = 0.0;
	
	@Transient
	private OrdersType mOrdersType = null;
	
	@Transient
	private User mBuyer = null;
        
        // 中间方法省略
}

蓝颜夕 2021-11-22 01:33:59


@michaely  再请教您一个问题,用AFINAL的时候还发现的,在创建数据库时候除了主键以外似乎int的还有其他类型字段都被保存成text类型,这样我自己拼接SQL语句时根据那个int字段来查的时候就查不到了,必须得加‘’引号把值括起来?有没有什么办法int就保存成int,不都弄成text了?

冷弦 2021-11-22 01:26:56

0谢谢

勿忘初心 2021-11-21 23:44:40

早就有了 

@Transient

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文