gpt4 book ai didi

android - ORMlite 没有返回我刚刚保存的对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:00 25 4
gpt4 key购买 nike

这是我失败的代码(它在一个 Activity 中运行,数据库助手在数据库中创建了 WishList 对象)

DatabaseHelper helper = DatabaseHelper.getInstance( getActivity() );
int savedID = 0;
WishList wl = new WishList();
wl.setName("abc");
try {
savedID = helper.getWishListDao().create(wl);
WishList wl_saved = helper.getWishListDao().queryForId( savedID );
wl_saved.getId();
} catch (SQLException e) {
e.printStackTrace();
}

这是我的实体。 ID 字段是自动生成的。

@DatabaseTable
public class WishList {
@DatabaseField(generatedId = true)
private int id;

@DatabaseField( canBeNull = false , unique = true )
private String name;

@ForeignCollectionField
private ForeignCollection<WishItem> items;
...

错误的是在数据库中生成的 ID 与 ORMlite 在下面的调用中返回的 ID 不同。它返回 1。

 savedID = helper.getWishListDao().create(wl);

数据库中的 ID 实际上是 37。知道我可能做错了什么吗?使用版本 4.41

最佳答案

ORMLite's Dao.create(...) 方法返回新创建对象的 ID,但返回数据库中已更改的行数——通常为 1。这里是Dao.create(...) 的 javadocs .

Create a new row in the database from an object. If the object being created uses DatabaseField.generatedId() then the data parameter will be modified and set with the corresponding id from the database. ... Returns: The number of rows updated in the database. This should be 1.

当 ORMLite 创建对象时,生成的 ID 随后会设置到 id 字段。要查找新对象的 ID,您可以从对象本身获取它:

// create returns 1 row changed
helper.getWishListDao().create(wl);
// the id field is set on the w1 object after it was created
savedID = w1.getId();

关于android - ORMlite 没有返回我刚刚保存的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346065/

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