簡體   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