/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.integration.wildfly.cdi.model;
import java.util.List;
import javax.inject.Singleton;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaDelete;
import javax.transaction.Transactional;
import org.apache.lucene.search.Query;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.hibernate.search.jpa.FullTextQuery;
import org.hibernate.search.jpa.Search;
import org.hibernate.search.query.dsl.QueryBuilder;
/**
* @author Yoann Rodiere
*/
@Singleton
public class EntityWithCDIAwareBridgesDao {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void create(EntityWithCDIAwareBridges entity) {
entityManager.persist( entity );
}
@Transactional
public void update(EntityWithCDIAwareBridges entity) {
entityManager.merge( entity );
}
@Transactional
public void delete(EntityWithCDIAwareBridges entity) {
entity = entityManager.merge( entity );
entityManager.remove( entity );
}
@Transactional
public void deleteAll() {
CriteriaDelete<EntityWithCDIAwareBridges> delete = entityManager.getCriteriaBuilder()
.createCriteriaDelete( EntityWithCDIAwareBridges.class );
delete.from( EntityWithCDIAwareBridges.class );
entityManager.createQuery( delete ).executeUpdate();
}
@Transactional
@SuppressWarnings("unchecked")
public List<EntityWithCDIAwareBridges> searchFieldBridge(String terms) {
FullTextEntityManager ftEntityManager = Search.getFullTextEntityManager( entityManager );
QueryBuilder queryBuilder = ftEntityManager.getSearchFactory().buildQueryBuilder()
.forEntity( EntityWithCDIAwareBridges.class ).get();
Query luceneQuery = queryBuilder.keyword()
.onField( "internationalizedValue" )
.ignoreFieldBridge()
.matching( terms )
.createQuery();
FullTextQuery query = ftEntityManager.createFullTextQuery( luceneQuery, EntityWithCDIAwareBridges.class );
return query.getResultList();
}
@Transactional
@SuppressWarnings("unchecked")
public List<EntityWithCDIAwareBridges> searchClassBridge(String terms) {
FullTextEntityManager ftEntityManager = Search.getFullTextEntityManager( entityManager );
QueryBuilder queryBuilder = ftEntityManager.getSearchFactory().buildQueryBuilder()
.forEntity( EntityWithCDIAwareBridges.class ).get();
Query luceneQuery = queryBuilder.keyword()
.onField( EntityWithCDIAwareBridges.CLASS_BRIDGE_FIELD_NAME )
.ignoreFieldBridge()
.matching( terms )
.createQuery();
FullTextQuery query = ftEntityManager.createFullTextQuery( luceneQuery, EntityWithCDIAwareBridges.class );
return query.getResultList();
}
}