在查询数据库时将 List 转换为逗号分隔的 String 以传递 SQL 的最佳方法是什么?

fat*_*ael 1 java sql hibernate jpa java-8

我有一个 ID 列表

1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)

我想写一个删除查询

public void deleteComputersUsingNative(List<Integer> id) {
    String commaSeperated = ?//Convert ID to  comma seperated string in to put in where clause
    em.createNativeQuery("DELETE FROM PD_OWNER.CIM_SNOW_COMP_OPTDRIV_TAB WHERE ID IN (" +commaSeperated +")").executeUpdate();
}
Run Code Online (Sandbox Code Playgroud)

toString()在一种解决方案中执行和删除括号。

有没有更好的方法可以在纯 java 或 jpa/hibernate 中处理这个问题?

And*_*cus 5

您可以使用String.join

String.join(',', id)
Run Code Online (Sandbox Code Playgroud)

尽管您可以将带有setParameterList方法的列表传递unwrap给休眠的Query,但这将是处理此问题的正确方法。有关更多详细信息,请参阅javadoc