1
我试图在我的数据库上创建“搜索引擎”。EJB - 如何通过非索引字段进行搜索?
我有一个ID,名称和说明表。 当我有一个ID我可以通过find()获得这个ID的记录。 但是,如果我想通过名称或描述获取记录,我该怎么做?我是否必须将名称设置为索引?
谢谢。
我试图在我的数据库上创建“搜索引擎”。EJB - 如何通过非索引字段进行搜索?
我有一个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持久性API的tutorial 。