簡體   English   中英

如何在Hibernate中保留枚舉的特定屬性?

[英]How to Persist a specific attribute of an Enum in Hibernate?

我在支持bean中有一個enum屬性,它具有2個屬性:“ id”(int屬性)和“ label”(String屬性)。 在數據庫中,我只需要保留“ id”,但是仍然需要在我的視圖中使用標簽值。 問題是:@Enumerated僅使我可以選擇使用EnumType.ORDINAL或EnumType.STRING進行持久化。 有什么方法可以將枚舉的“ id”屬性保留在數據庫中? (順便說一句...我正在使用休眠)。

謝謝!

fd的評論到位。 但是,如果您確實需要此解決方案,則可以對解決方案進行一些調整,而不是持久保留枚舉,可以將其標記為瞬態,然后將enumId的屬性添加到實體類中,而您將持久化。 剩下的唯一事情就是通過enumId getter和setter方法同步枚舉的值

id和屬性是同一事物的兩個方面。 它們具有相同的含義。 將它們都存儲在數據庫中是多余的,並且違反了數據庫設計的“第三范式”。

對於JPA(休眠)實體,建議您將ORDINAL(即id)定義為您的字段,並按照上面“主從”的建議將字符串定義為瞬態。 然后定義@PostLoad和ID的setter,以使用name()將序號轉換為名稱(即您的標簽),並在label的setter中使用valueOf(String name)轉換回。

暫無
暫無

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

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