使用UUID将SQL转换为JPQL

使用UUID将SQL转换为JPQL,sql,jpql,uuid,Sql,Jpql,Uuid,我试图使用JPQL来检索使用UUID类型ID的消息 这是正确的SQL语句 SELECT * FROM C2_MESSAGES WHERE ID = x'a9181d1c429a4b67b1379bc9ee6a68e7'; 我试过这个的不同变体 UUID uid = UUID.fromString(c2MessageId); String messageQuery = "SELECT DISTINCT msg FROM C2Message msg WHERE msg.id = " + ui

我试图使用JPQL来检索使用UUID类型ID的消息

这是正确的SQL语句

SELECT * FROM C2_MESSAGES WHERE ID = x'a9181d1c429a4b67b1379bc9ee6a68e7';
我试过这个的不同变体

UUID uid = UUID.fromString(c2MessageId);   
String messageQuery = "SELECT DISTINCT msg FROM C2Message msg WHERE msg.id = " + uid;

如果有人有任何建议,我将不胜感激

带单引号的转义字符串

String messageQuery = "SELECT DISTINCT msg FROM C2Message msg WHERE msg.id = '" + uid + "'";

在Sql中,如果出现以下情况,最好使用单引号转义字符串 用双引号编写查询

这可以避免许多错误。 请尝试此代码,它应该可以工作:

String query = "SELECT DISTINCT msg FROM C2Message msg WHERE msg.id ='"+uid+"'";

不要连接字符串。使用准备好的语句或查询参数
queryq=em.createQuery(“从消息m中选择m,其中m.id=:id”);q、 设置参数(“id”,uid)这降低了有人重构类并将uid真正作为字符串(SQL注入)注入的风险,尝试了相同的方法,但从jpql中获得强制转换异常。尝试将uuid与“uuid”匹配。它对你有用吗?