package com.springone.myrestaurants.data;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.springone.myrestaurants.domain.Restaurant;
@Repository
public class RestaurantRepository {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public Restaurant findRestaurant(Long id) {
if (id == null) return null;
final Restaurant rest = entityManager.find(Restaurant.class, id);
if (rest != null) {
rest.persist();
}
return rest;
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=true)
public List<Restaurant> findAllRestaurants() {
return entityManager.createQuery("select o from Restaurant o").getResultList();
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=true)
public List<Restaurant> findRestaurantEntries(int firstResult, int maxResults) {
return entityManager.createQuery("select o from Restaurant o").setFirstResult(firstResult).setMaxResults(maxResults).getResultList();
}
@Transactional
public long countRestaurants() {
return ((Number) entityManager.createQuery("select count(o) from Restaurant o").getSingleResult()).longValue();
}
}