我正在尝试在我的数据库上创建“搜索引擎”。
我有一个带有 ID、名称和描述的表。当我有一个 ID 时,我可以通过 find() 获取具有此 ID 的记录。但是,如果我想按名称或描述获取记录,我该怎么做?我是否必须将名称设置为索引?
谢谢。
作为一般规则,如果您必须经常通过其中一个字段查询表并且该表包含许多记录,那么在数据库中为该字段创建索引可能是一个好主意。
关于另一个问题:如果您需要按名称、描述或其他字段获取记录,并且您正在使用 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 的更多信息。