gpt4 book ai didi

java - 如何在ormlite中保存带有 'foreign object'的对象

转载 作者:行者123 更新时间:2023-12-02 06:54:05 27 4
gpt4 key购买 nike

这是我的数据库:

CREATE TABLE other (
id integer primary key autoincrement not null,
texto text
);

CREATE TABLE tabela (campoid INTEGER primary key autoincrement not null,
camponome text not null, chave int,
foreign key (chave) references other(id));

这是我的类(class):

@DatabaseTable(tableName = "tabela")
public class Bean {

@DatabaseField(columnName = "campoid", generatedId = true)
private int _id;

@DatabaseField(columnName = "camponome")
private String nome;

@DatabaseField(foreign = true, columnName = "chave", canBeNull = false)
private Part chave;
}

和其他映射的类

@DatabaseTable(tableName = "other")
public class Part {

@DatabaseField(generatedId = true, columnName = "id")
private Integer id;

@DatabaseField(columnName = "texto")
private String texto;
}

但是当我保存 Bean 对象时,对象“部分”也没有保存:(

        Helper helper = OpenHelperManager.getHelper(this, Helper.class);
Dao<Bean, Integer> dao = helper.getDao(Bean.class);

Bean firstBean = new Bean();
firstBean.setNome("first be persisted");

Part part = new Part();
part.setTexto("ANY TEXT");
firstBean.setChave(part);

dao.create(firstBean);

在我的日志中:

07-13 00:25:26.602: D/BaseMappedStatement(3796):使用语句 'INSERT INTO tabela (camponome ,chave ) VALUES (?,?)' 和 2 个参数,更改了 1 行

有什么想法吗?

最佳答案

but when i save an Bean object, the Object 'part' does not save too :(

对。 ORMLite创建对象时,默认情况下不会保留子对象。您可以打开 foreignAutoCreate = true 标志,它会为您执行此操作。请参阅javadocs for foreignAutoCreate .

您的 chave 字段应定义为:

@DatabaseField(foreign = true, columnName = "chave", canBeNull = false,
foreignAutoCreate = true)
private Part chave;

如果你想手动完成,你应该:

partDao.create(firstBean.chave);
beanDao.create(firstBean);

您首先在数据库中创建 Part,因为您需要将 Part 中的 ID 保存到您的 bean 中。 p>

关于java - 如何在ormlite中保存带有 'foreign object'的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626685/

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