Java 如何使用'保存对象;异物';在奥姆利特

Java 如何使用'保存对象;异物';在奥姆利特,java,android,sqlite,orm,ormlite,Java,Android,Sqlite,Orm,Ormlite,这是我的数据库: 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,

这是我的数据库:

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));
这是我的课程:

@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对象时,对象“part”也不会保存:(

Helper-Helper=OpenHelperManager.getHelper(this,Helper.class);
Dao=helper.getDao(Bean.class);
Bean firstBean=新Bean();
setNome(“第一个被持久化”);
零件=新零件();
第三部分“任何文本”);
firstBean.setChave(部分);
创建(firstBean);
在我的日志中:

07-13 00:25:26.602:D/BaseMappedStatement(3796):使用语句“插入到
tabela
camponome
chave
)值(?,)和2个参数插入数据,更改了1行

有什么想法吗

但当我保存Bean对象时,对象“part”也不会保存:(

对。默认情况下,在创建对象时不会保留子对象。您可以启用
foreignAutoCreate=true
标志,但该标志将为您执行此操作。请参阅

您的
chave
字段应定义为:

@DatabaseField(foreign = true, columnName = "chave", canBeNull = false,
    foreignAutoCreate = true)
private Part chave;
如果您想手工操作,您应该:

partDao.create(firstBean.chave);
beanDao.create(firstBean);
您首先在数据库中创建
部分
,因为您需要
部分
的ID,该ID将保存到bean中

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