JB Nizet有一個正確的觀點。檢索它並在Http響應中序列化是兩個獨立的問題。
我不確定你用什麼來序列化你的數據。如果它是REST API,請考慮Jackson的@JsonIgnore
註釋或Eclipselink MOXy的@XmlTransient
等效項。如果這使用Java EL(facelets,jsps),則應該只能選擇感興趣的bean屬性。
如果您在檢索過程中確實需要這樣做,請考慮JPQL/Criteria API的構造函數。確保該對象具有接受指定參數的構造函數,並且請記住,如果以此方式檢索,則不會在持久性上下文中進行管理。
SELECT NEW my.package.User(u.id, u.name, u.etc) FROM User u
另外,考慮@PostLoad
生命週期回調。
@PostLoad
private void postLoad() {
this.password = null;
}
最後,這可能不是這種情況,但我想強化一個概念,即密碼不應該以明文存儲。我提到這一點,因爲返回使用安全算法(bCrypt,多次迭代SHA-512等)的散列醃製密碼並不是什麼大不了的事情(但仍然不理想)。
使用JPA將它加載到服務器內存中並將其發送到瀏覽器之間存在巨大差異。您應該修正的是您發送給瀏覽器的數據,而不是使用JPA加載的數據。 JPA因此不適合觀看。看看你如何發送數據到瀏覽器。 –