如何在 HQL 中为 Unicode 字符串 (T-SQL) 使用 "N" 前缀?
How to use the "N" prefix for Unicode strings (T-SQL) in HQL?
我有这个 MS SQL 查询:
SELECT * FROM tags_synonyms WHERE TITLE LIKE N'piece'"
如何转换为HQL?
String sql = "SELECT * FROM tags_synonyms WHERE TITLE LIKE N:piece";
query.setString("piece", "%" + piece + "%");
捕获异常:
Invalid column name 'N@P0'.
如果您使用的是 Microsoft JDBC Driver for SQL Server,那么您不必担心我们在纯 T-SQL 查询中经常看到的字符串前缀 N'
。如果您的 Java 项目设置为使用 Unicode 字符串(例如,通过对 Java 源文件使用 UTF-8 编码),那么 JDBC 驱动程序将负责 N'
前缀给你。
例如下面的Java代码
try (Connection con = DriverManager.getConnection(connectionUrl)) {
try (PreparedStatement s = con.prepareStatement(
"SELECT language FROM vocabulary WHERE phrase LIKE ?")) {
s.setString(1, "%γιορτή%");
try (ResultSet rs = s.executeQuery()) {
if (rs.next()) {
System.out.println(rs.getString("language"));
}
}
}
} catch (Exception e) {
e.printStackTrace(System.out);
}
导致以下语句被发送到 SQL 服务器(如 SQL Profiler 中所示):
exec sp_prepexec
@p1 output,
N'@P0 nvarchar(4000)',
N'SELECT language FROM vocabulary WHERE phrase LIKE @P0 ',
N'%γιορτή%'
我有这个 MS SQL 查询:
SELECT * FROM tags_synonyms WHERE TITLE LIKE N'piece'"
如何转换为HQL?
String sql = "SELECT * FROM tags_synonyms WHERE TITLE LIKE N:piece";
query.setString("piece", "%" + piece + "%");
捕获异常:
Invalid column name 'N@P0'.
如果您使用的是 Microsoft JDBC Driver for SQL Server,那么您不必担心我们在纯 T-SQL 查询中经常看到的字符串前缀 N'
。如果您的 Java 项目设置为使用 Unicode 字符串(例如,通过对 Java 源文件使用 UTF-8 编码),那么 JDBC 驱动程序将负责 N'
前缀给你。
例如下面的Java代码
try (Connection con = DriverManager.getConnection(connectionUrl)) {
try (PreparedStatement s = con.prepareStatement(
"SELECT language FROM vocabulary WHERE phrase LIKE ?")) {
s.setString(1, "%γιορτή%");
try (ResultSet rs = s.executeQuery()) {
if (rs.next()) {
System.out.println(rs.getString("language"));
}
}
}
} catch (Exception e) {
e.printStackTrace(System.out);
}
导致以下语句被发送到 SQL 服务器(如 SQL Profiler 中所示):
exec sp_prepexec
@p1 output,
N'@P0 nvarchar(4000)',
N'SELECT language FROM vocabulary WHERE phrase LIKE @P0 ',
N'%γιορτή%'