[英]ORMLite. How to establish one-to-one relations of two tables related, like “primary key to foreign key”
我有两个表,其中一个与另一个表之间的关系超出了外国ID到主要ID的关系。
而且我有一些模型描述,我认为这看起来是正确的,但它不起作用。
第一桌
public class Person {
@DatabaseField(id = true)
private int id;
@DatabaseField(columnName = "person_id", foreign = true, foreignAutoRefresh = true)
Patient patient;
public Patient getPatient() {
return patient;
}
第二张桌子
public class Patient {
@DatabaseField(columnName = "person_id", foreign = true)
private Person personId;
当我尝试通过“人员”从“患者”中查找数据时,我得到了一个空指针。 如果亲自更改外键列名称,则会得到PSQLException,因为ResultSet不包含这样的列。
对于调试,我使用简单的main方法
public static void main(String[] args) throws SQLException {
Person p = new PersonDAO().getByUserId();
System.out.println(p.getPatient());
}
如何建立两个相关表的一对一关系,例如“主键到外键”
patientId
关系的问题是,在“ Person
表中有一个patientId
字段,在“ Patient
表中有一个personId
字段。 但是,仅在数据库中创建ID时才设置ID。
这意味着您将必须执行3个数据库操作:
personDao.create(...)
在数据库中创建Person
以获得与之关联的ID。 Person
设置在相应的Patient
,然后使用patientDao.create(...)
在数据库中创建Patient
。 Patient
重新站上Person
实体现在患者已经有一个id,然后与数据库更新personDao.update(...)
其他几件事:
dao.getByUserId()
方法的参数,因为它需要一个ID才能找到有问题的特定对象。 Patient
也有一个id字段。 Patient
”中的字段应该只是person
,而不是personId
。 ORMLite将在该字段的封面下存储一个ID。 “ Person
”中的字段正确地称为“ patient
。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.