繁体   English   中英

ORMLite。 如何建立两个相关表的一对一关系,例如“主键到外键”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM