DBに「検索エンジン」を作成しようとしています。
ID、名前、説明を含むテーブルがあります。Id がある場合、find() によってこの Id を持つレコードを取得できます。しかし、名前または説明でレコードを取得したい場合、どうすればよいでしょうか? 名前をインデックスとして設定する必要がありましたか?
ありがとう。
原則として、フィールドの 1 つによってテーブルを頻繁にクエリする必要があり、テーブルに多くのレコードが含まれている場合は、データベースにそのフィールドのインデックスを作成することをお勧めします。
他の質問について: 名前、説明、またはその他のフィールドでレコードを取得する必要があり、JPA を使用している場合は、JPQLクエリ言語を使用します。たとえば、エンティティのタイプがMyEntity
(フィールドid
が 、name
、description
) であると仮定すると、次のクエリは名前が のエンティティのリストを返しますaName
。
EntityManager em = ... // get the entity manager
Query q = em.createQuery("SELECT me FROM MyEntity me WHERE me.name = :name");
q.setParameter("name", aName); // aName is the name you're looking for
List<MyEntity> results = (List<MyEntity>) q.getResultList();
Java Persistence API の詳細については、チュートリアルを参照してください。