第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Spring Data JPA / Hibernate 中設(shè)計具有訪問限制的可選多對多關(guān)系

在 Spring Data JPA / Hibernate 中設(shè)計具有訪問限制的可選多對多關(guān)系

九州編程 2023-06-21 13:37:07
我想設(shè)計一個簡單的折扣代碼應(yīng)用程序,允許用戶跟蹤他們對折扣代碼的使用情況。我已經(jīng)有用戶可以使用的折扣代碼的現(xiàn)有“公共”列表。但是,用戶也應(yīng)該能夠注冊使用“私人”折扣代碼。在最簡單的形式中,這些表可能看起來像這樣,帶有相應(yīng)的@Entity類:折扣使用情況╔════╦══════════════════╦═════════╦════════════╦══════════╦═════╗║ id ║ discount_code_id ║ user_id ║ last_used  ║ num_uses ║ ... ║╠════╬══════════════════╬═════════╬════════════╬══════════╬═════╣║  1 ║                2 ║       7 ║ 2019-05-01 ║        3 ║     ║║  2 ║                1 ║       4 ║ 2019-07-10 ║        1 ║     ║║  3 ║                3 ║      11 ║ 2019-05-19 ║        2 ║     ║║  4 ║                2 ║      11 ║ 2019-05-01 ║        1 ║     ║║  5 ║                2 ║       6 ║ 2019-07-10 ║        1 ║     ║║  6 ║                1 ║       4 ║ 2019-05-19 ║        2 ║     ║╚════╩══════════════════╩═════════╩════════════╩══════════╩═════╝折扣代碼╔════╦═══════╦════════════════╦═════════════════╦═════╗║ id ║ code  ║    website     ║ expiration-date ║ ... ║╠════╬═══════╬════════════════╬═════════════════╬═════╣║  1 ║ t3fj4 ║ somestore.com  ║ 2019-12-31      ║     ║║  2 ║ ds7do ║ otherstore.com ║ 2019-12-31      ║     ║║  3 ║ uw7tp ║ thirdstore.com ║ 2020-03-15      ║     ║╚════╩═══════╩════════════════╩═════════════════╩═════╝要求:1.我需要向用戶展示所有可用的discount_codes,即所有公共的和他們自己添加/使用的所有私人的。但是,用戶不應(yīng)該能夠看到其他用戶添加到他們自己的列表中的代碼。2.用戶應(yīng)該能夠在網(wǎng)站 x 上使用代碼 y 注冊購買。如果是新的discount_code,應(yīng)該保存。用法discount_usages也應(yīng)保存到,如果是用戶第一次使用,則作為新行保存discount_code,或者如果用戶以前使用過該代碼,則更新行。筆記:( discount_code_id, user_id) 唯一標識 中的一行discount_usages。@ManyToOne如果每個“私有”discount_code都保存在每個使用它的客戶的單獨行中,則也可以將其建模為關(guān)系。問題:是否可以在不增加大量復(fù)雜性的情況下滿足這些要求?我的第一次嘗試是將以下內(nèi)容添加到DiscountCode實體中:@ManyToOne(optional = true) User ownedByUser;然后在DiscountCodeRepository:@Query("select d from DiscountCode d where d.ownedByUser.id is null         or d.ownedByUser.id = :userId") findAllByOwnedByUserIdOrOwnedByUserIdIsNull(@Param("userId") Long userId);但是這樣做的復(fù)雜性增加得非???,而且很容易出現(xiàn)編程錯誤,不小心將私人代碼顯示給錯誤的用戶。
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

是否可以在不增加大量復(fù)雜性的情況下滿足這些要求?

在我看來,你當(dāng)然可以。

如果您擔(dān)心未來的復(fù)雜性,可以使用Specification pattern?

在您的情況下,您可以編寫以下規(guī)則:

  • 所有公共的

  • 他們自己添加/使用的所有私人的

查看完整回答
反對 回復(fù) 2023-06-21
  • 1 回答
  • 0 關(guān)注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號