作者:
NullLife (廢材大叔有點累)
2014-07-17 13:35:30: 寫 code 難免
: 我講一下我的解決方案
: 首先,部門應該要有部門代號 (table的pk或是entity的@Id)
: 查詢時可以把部門代號當條件
我的確是有seq(就像是部門代號),
但是我今天送進來的條件就是"名字",整個支線每個節點的名字
: 舉個例來說,你去商店說你要HTC手機,店員會問你型號
: 不然誰曉得你要哪一隻?
: 店員也可以把所有HTC手機拿出來給你選。
: 總之不可能心電感應就對了。
: 第二種是往上檢查的 JPQL
: 假設 samsung 手機型號是這樣悲慘的分類
: Samsung ─ galaxy ┬ S ─ 3
: └ Tab ─ 3
: 首先要查 "3",會查出兩個
: 所以要把父節點當作查詢條件
: select x from x where x.name=(?1) and x.parent=(?2)
: ?1 就給 String
: ?2 就給 Entity
: 這兩種方式雖然不能說是完美解,但在邏輯上說得通。
: 有清楚的邏輯,就算要寫code,應該也不會太笨吧?
: 如果真的覺得寫code很麻煩,改scheme很麻煩的話
但是這樣只能送兩層,就像我舉 Ea 的例子,
假設好死不好 Ea 跟 Df 上一層 都叫做同樣的名字,
那這樣還是會查出兩筆~
*不過我在寫入的時候已經控制好,樹狀結構不會有重複的情況,
也就是說最多最多到B那一層,名字就一定不一樣,會分開了,
但B各支線向下或許有可能會有同樣的節點名稱
: 有 framework 是可以到這種程度的
: @Query("select x from x where x.name=(?1) and x.parent=(?2)")
: public MyEntity myAutoQuery(String name, MyEntity parent);
: 就寫好了。
這個我在孤狗一下,感謝提供資訊<(_ _)>
: 另外,程式這東西一定要有規則綁住,不然會很麻煩
: 例如:"萬一我部門代號也重覆怎麼辦"
: 就不要讓他重複阿,重複就代表資料有問題,要去找到為什麼會重複
: 而不是去想 "代碼重複後我要怎樣做才能只輸入代碼就只查到一筆資料"
: 就像如果有人問說
: "我的電腦只要拔掉電源線就會關機,你能讓我的電腦拔掉電源線不關機嗎?"
: 我們要解的是不要讓 user 腳賤一直踢到電源線,
: 而不是真的讓電腦可以在無電底下運作