java - 保存到 LinkedHashSet <String> - 初学者

标签 java mysql list linkedhashset

@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/

相关文章:

java - 比较 Java 枚举值

java - 如何对两个 Apache Spark JavaPairRDD 求和?

php - MySQL:从最新行的列中检索值

mysql - 如何在不停机的情况下将 MySQL 数据库移动到另一台服务器

mysql - 优化 MySQL 查询,耗时将近 20 秒!

python - 如何显示QPushButton的列表?

python - 如何将列表值与字典键进行比较并使用 python 创建一个新字典

java - 如何对AbstractRoutingDataSource进行安全频繁的DataSource切换?

java - RMI 和同步

c++ - 过滤器列表 - C++