0
比方說,我們有2個實體(用戶和配置文件):如何正確列映射使用枚舉
User {
ID INT NOT NULL,
STATUS CHAR(5) NOT NULL
}
Profile {
ID INT NOT NULL,
STATUS CHAR(5) NOT NULL
}
我會映射我的實體,如:
public class User {
@Id private Integer id;
private Status status;
}
public class Profile {
@Id private Integer id;
private Status status;
}
public enum Status {
ACTIVE, INACTIVE, BLOCKED, SUSPENDED, PENDING;
}
@Converter(autoApply = true)
public class StatusConverter implements AttributeConverter<Status,String> {
// Converter methods omitted for brevity
}
由於它的作品,我相信一切都很好,直到現在。 某些狀態在許多實體中是等效的,如ACTIVE,但有些狀態不等於另一個實體狀態。例如,用戶可以擁有狀態BLOCKED,但我們從來沒有阻止的配置文件(但我們有一個不活躍的配置文件)。
現在我有一些問題,我想您的幫助:
- 我應該爲每個實體創建一個枚舉(如UserStatus和ProfileStatus),所以每一個有它自己的一套「身份」?如果是,我應該在哪裏放置枚舉?在用戶實體(
User.Status
)或某些特定包(com.example.enums.UserStatusEnum
)內? - 我應該將它映射爲表
Status { ID INT NOT NULL, CODE CHAR(5) }
並讓應用程序管理它嗎?或者甚至創建一個新列(ENTITY CHAR(5)
)來指定該狀態對應的實體? - 更改枚舉有一個屬性來指定它的實體?
我不明白我應該遵循什麼路徑。你有另外一個建議嗎?
請記住,可以有更多的實體,每個實體都有一組不同的狀態。但是這些狀態並不會經常改變,所以我真的不相信我需要在我的數據庫上使用表格。
謝謝你的幫助! 但我有點困惑。在第二段中,我明白你告訴我要使用很多表格,每種表格都需要一張表格。但在下一個你說使用多個枚舉。哪種方法更好? 另外,如果使用枚舉,我應該如何編碼?它是一個枚舉實體?還是一個包含很多枚舉的大包?有沒有設計模式? – MiguelKVidal
你還有什麼要添加到你的答案嗎?根據我在回答中的最後一條評論,您是否有其他建議? – MiguelKVidal
@MiguelKVidal你需要更多的枚舉和更多的表(每個枚舉的表)。我不會把這個枚舉放在一個類中。只需將它們放在與其他模型類相同的包中即可。 – Bohemian