簡體   English   中英

對未知實體的引用:java.lang.Integer

[英]Reference to unknown entity: java.lang.Integer

我有簡單的@Entity課程

@Entity
@Table(name = "user")
@Getter       
class User {
    @Id
    @GeneratedValue
    private final Integer userID;    
    private final String username;   
}

而另一個,應該掌握它的外鍵

@Getter
@Builder
@Entity
class Task {
    @Id
    @GeneratedValue
    private final Integer taskID;

    private final String title;
    private final String details;

    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinTable(name = "user", joinColumns = {@JoinColumn(name = "userID")})
    private final Integer userID;
}

關鍵是 - UserTask類在分離的包中,並且都是包作用域。 意味着我不能簡單地寫

@ManyToOne(cascade = CascadeType.PERSIST)
@JoinTable(name = "user", joinColumns = {@JoinColumn(name = "userID")})
private final User user;

這就是為什么我得到的

@OneToOne or @ManyToOne on com.johndoe.teamplanner.task.domain.Task.userID references an unknown entity: java.lang.Integer

是否有解決方法,以實現我的需求? 創建分離包中的兩個實體與包范圍之間的關系?

您可以嘗試以下替代方案:

  • 顯而易見的一個:將類User的訪問者更改為public 但是,如果您問這可能是因為您無法更改它,因為您沒有源代碼。
  • 反編譯User .class文件以獲取源。 如果用戶不是那么復雜,你可能會試試這個。 然后,將訪問者更改為public
  • 生成您自己的User類版本,並將其用於持久性,另一個用於它提供的功能。
  • 地圖的userIDTask類只是作為一個整數,並通過代碼,你從來沒有分配一個值不是一個有效的用戶ID保證: @Column private Integer userID; 如果使用JPA生成表,則需要手動添加數據庫中的外鍵以確保數據的完整性。

我希望其中一些解決方案可以提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM