我正在嘗試使用 Spring Boot 和 PostgreSQL 構建一個應用程式,我想在其中存盤一個游戲物體。
游戲的設定有很多變化但仍然有限。我認為它值得存盤為單獨的物體并將其重用于具有相同設定的游戲。
@Entity
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Game {
@Id
@GeneratedValue
@Type(type = "pg-uuid")
private UUID id;
private Setting setting;
// etc, players and game result related stuff
}
@Entity
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Setting {
@Id
@GeneratedValue
@Type(type = "pg-uuid")
private UUID id;
private String format;
// etc, other customizable settings
}
想要我想要達到的是
- 僅當設定物體不存在時才創建它。進行此驗證的最佳方法是什么?
- 設定游戲和設定之間的正確關系。一個設定物體可以屬于任意數量的游戲,但一個游戲只能有一個設定。
謝謝
uj5u.com熱心網友回復:
- 僅當設定物體不存在時才創建它。進行此驗證的最佳方法是什么?
只有在不存在時才向設定表添加新行需要更多規范
- 您可以從字面上理解這一點,一旦您在請求中獲得設定,請檢查您的整個設定表以查找與您收到的設定的所有值匹配的設定,如果存在則可以,如果不存在則保存一個新設定。
- 但是,由于您說設定是有限的,我建議向用戶提供可用設定串列并讓他們選擇其中一個,如果他們愿意,可以選擇添加新設定。如果您真的想驗證是否不存在與該設定的完全匹配,那么您也可以在此時進行驗證。
- 設定游戲和設定之間的正確關系。一個設定物體可以屬于任意數量的游戲,但一個游戲只能有一個設定。
- 這只需要你在你的游戲表中有一個設定外鍵
您的 Game 物體類將如下所示:
@Entity
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Game {
@Id
@GeneratedValue
@Type(type = "pg-uuid")
private UUID id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="setting_id")
private Setting setting;
// etc, players and game result related stuff
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/485755.html
標籤:爪哇 PostgreSQL 弹簧靴 jpa 弹簧数据-jpa
