@Override
public LinkedHashSet <String> listHotels() {
Query query = em.createNativeQuery("select * from Hotel");
LinkedHashSet <String> hotel= query.getResultList();
return hotel;
}
我收到一条警告,说 类型不兼容。查询.getResultList();返回一个 List
,但我希望该方法返回的是一个 LinkedHashSet
。
我在这里使用 LinkedHashSet
的原因是为了避免将重复值输入到数据库中。我会先调用 listHotels()
方法,然后检查它是否已经包含该值,如果没有,我会将值保存到数据库中
编辑
public void saveHotel(Hotel hotel) {
if (hotel.getId() ==null){
em.persist(hotel);
} else {
em.merge(hotel);
}
}
这就是我将记录保存到我的数据库的方式
最佳答案
您无法更改 query.getResultList() 的结果类型,但您可以将 List 转换为 LinkedHashSet
:
LinkedHashSet<String> hotel= new LinkedHashSet(query.getResultList());
(创建的 LinkedHashSet 将具有列表中的唯一元素。但是您显示的示例是 SELECT sql,而不是 INSERT/UPDATE。为了保证数据库中的唯一记录,您必须做出这样的安排 -使用 LinkedHashSet 左右 - 在 INSERT/UPDATE 部分。如果您已经在使用 LinkedHashSet
添加到数据库中,则数据库无论如何都不会有重复记录。顺便说一句,您有必要的唯一性对数据库的约束对吗?)
关于java - 保存到 LinkedHashSet <String> - 初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979199/