簡體   English   中英

如何在JPA實體中創建非持久字段?

[英]How to create a non-persistent Field in an JPA Entity?

我有一個名為Users的實體,該實體具有登錄名,名稱和部門作為存儲在Users表中的字段。

我的Spring-Boot配置定義了為該應用程序中的用戶賦予系統管理員角色的部門。

關鍵問題是我希望登錄end-point返回用戶數據以及其是否是系統管理員的其他信息。

我認為此信息應該在User類中,但是我不希望將此信息與其他字段一起存儲在數據庫中,因為管理部門可能會更改,或者用戶從一個部門更改為另一個部門而不管理用戶。系統。

編輯 )我將在用戶請求login()時定義此IsManager字段:我將獲取用戶的department字段,並對照managerDepartment的列表進行檢查以將其設置為true或false。

因此,問題是將信息放入實體類的非持久字段中是否正確(以及如何做到這一點),或者我是否可以在rest方法中更改ResponseEntity以添加附加信息(以及如何)?

簡短的答案是使用@Transient批注。 正確的答案是將UserEntity和UserDto分為兩個不同的類,並使用MapStruct進行轉換。

好吧,這似乎是一個偏愛問題/意見,希望因此仍未解決。

添加@Transient字段沒有任何危害,但我的首選還是避免像這樣更改@Entities

因此,在非常相似的情況下,我決定創建一個包裝器Response類,該類包含User和諸如“間接角色”之類的東西(如系統管理員角色)

通常,這是因為我將所有實體類放在一個單獨的項目/ jar中,然后將其用於各種客戶端和服務。 然后,在@Entity添加任何內容之前,我先分析是否還有其他依賴代碼需要此內容,或者它是否僅與此服務相關。

而且,如果添加僅與該特定服務/客戶端有關,則我不想將其添加到@Entity並使它“更復雜”,因為僅需要此服務。

因此,我認為我的答案已包含在上一段中。

暫無
暫無

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

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