今、私は要件を持っています。
ユーザーが存在名を入力するとき、ユーザーに使用可能な名前をすばやく表示する必要があります。そしてフロントエンドでは問題ありません。しかし、バックエンドでは、シャープなコードをコーディングする方法は?
この関数は、ユーザーが名前「Java」を使用して電子メールアカウントを登録する場合、重複が見つかった場合に、「Java01」、「Java001」、「Java002」などの利用可能な名前の提案をユーザーに提供するようなものです。
現在、私の考えは次のとおりです。 例:
ユーザー入力名は「Name01」です。
まず、「JPQL(JPA)」を使用して、名前が存在することを検証します。
存在する場合は、次のようなSQLを作成しますSelect name from table a where a.name like 'Name01%'
。次に、存在名リストを取得します。{'Name012','Name014','Name015'...}
したがって、「Name01」を使用して次のような推測リストを一般{'Name010','Name011','Name012','Name013','Name014',...}
化します。次に、推測リストを使用して存在名リストを比較し、10サイズのリストを返します(dbには存在しないはずです。ユーザーはそれらの1つを使用して保存できます) 2番目の検証を回避するために迅速に要求します。)のように:{'Name010','Name011','Name013','Name016',...}
しかし、推測がデータベース内のすべての存在をリストしている場合。'Name0%'でdbを検索し、再帰を実行する必要があります。
それはとても非効率的なようです。推測リストを一般化する方法と、比較の頻度を減らすために比較する方法がわかり
ません。
誰もが良い解決策を持っていますか?
ヒント:JSF + EJB + JPA(Eclipse Link 1.0)DB2を使用します。名前の最大長は10で、文字のみを含めることができます。