2016-03-02 61 views
1
@Entity 
@Table 
public class Page { 

    ... 

    private String URL; 

    public void setURL(String URL) { 
     this.URL = URL; 
    } 

    public String getURL() { 
     return URL 
    } 
} 

URL被映射到表中的一個字段。我在setURL()方法中設置了一個斷點,但程序在調試時不會中斷;然後我將中斷點更改爲getURL()方法,觸發了中斷點。實體類中的Setter方法

這是否意味着setURL方法根本沒有被使用或觸發?前視圖不接受用戶輸入的URL值,並從數據庫中檢索URL。如果是這樣的話,我是否需要setURL()方法?

+0

我希望它被用來當您檢索具有非空值 –

+0

什麼不對行?我整個程序看起來很正常。 – marlon

回答

0

如果該字段實際上已設置,但無法在調試中捕獲該字段,則可能是因爲它是通過反射設置的,而不是使用setter。

+0

預期的行爲是什麼? – marlon

+0

從你在問題中發佈的內容中,你不指定訪問類型,也不註釋你的字段/方法,這將是反思。 – Bax

0

JPA允許您將訪問類型定義爲字段或屬性。默認情況下,這是根據@Id註釋是放置在字段還是放置者上而設置的。

如果訪問類型是字段,則JPA實現將使用反射來直接使用字段,即使它們是private

更多閱讀: Other AnswerJPA Access Type

+0

我有一個字段「@Id private int id」,所以這就是爲什麼它是字段訪問?另外,@Id可以放在方法上嗎?我從來沒有見過。 – marlon

+0

您也可以明確地在類上設置@Access註釋 –