如果我有下一个代码
/**
* Spring Data JPA repository for the Event entity.
*/
@Repository
public interface EventRepository extends JpaRepository<Event, Long>{
@Query("SELECT id, name FROM event WHERE id IN (:ids)")
List<EventItem> findEvents(@Param("ids") Long[] ids);
}
并且想使用它
Long[] ids = new Long[3];
ids[0] = new Long(1);
ids[1] = new Long(2);
ids[2] = new Long(3);
eventRepository.findEvents(ids);
如何正确使用。我是 Spring 框架的初学者。我想同时获取一些具有特定 id 的记录。
最佳答案
使用 JPA @NamedQuery
即
事件实体
@Entity
@Table(name = "event")
@NamedQuery(name = "Event.fetchEventItem",
query = "SELECT id, name FROM event WHERE id IN (:ids)"
)
public class Event {
....
}
您的界面
@Repository
public interface EventRepository extends JpaRepository<Event, Long>{
List<EventItem> findEvents(Long[] ids);
}
接口(interface)实现类
@Repository
@Transactional(readOnly = true)
public class EventRepositoryImpl implements EventRepository {
@PersistenceContext
EntityManager entityManager;
@Override
public List<EventItem> findEvents(Long[] ids) {
List<Event> list = new ArrayList<Event>();
Query query = em.createNamedQuery("SELECT c FROM Country c");
Query query = entityManager.createNamedQuery("Event.fetchEventItem", Event.class);
query.setParameter(1, ids);
list = query.getResultList();
// Here You can Prapared List<EventItem>
}
}
关于java spring Long[](数组)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052550/