我对Hibernate很新,我想得到一个字符串的最后N个字符。我发现了substring方法,但这并没有真正帮助:(
有没有人有任何想法?
TIA
答案 0 :(得分:2)
我实际上是使用子字符串修复它。我忘了我可以使用参数。我做了类似的事情:
Query q = " .. where substring (field, :offset, :length) = something_else"
q.setParameter("offset", field.length() - N + 1);
q.setParameter("length", N);
答案 1 :(得分:0)
我很惊讶这没有帮助substring(int beginIndex,int endIndex)。但是如何拆分(String regex,int limit)。我认为需要更多关于你想要完成的事情的信息。
答案 2 :(得分:0)
我不久前就解决了这个问题,再次点击它,然后又回到了我几周前解决的问题。
假设您正在上传文件。该文件将类似于/tmp/user/1/image.jpg
或c:\temp\user\1\image.jpg
上传过程需要以为其生成图像存储的实际路径的方式编写,并且可以重新生成,因此假设我们的路径是
String actualPath='/tmp'
String user=user+"/"
Long id=1
String getPath() {
return "${actualPath}/${user}/${id}"
}
String generatePath(actualPath,user,id) {
return "${actualPath}/${user}/${id}"
}
当尝试执行我们的HQL时,我们需要能够提取路径的实际部分,因此$path
或generatePath(actualPath,user,id)
应返回相同的内容,然后hql将类似于hql之外的内容:< / p>
int filePosition = filePosition(actualPath,user,id)
在HQL中:
, substring(drd.image,${filePosition+1},LENGTH(drd.image)) as fileName)
当前功能之外:
//where filePosition returns size of generic string bound to string image...
private int filePosition(String actualPath,user,id) {
return (actualPath+user+id).size()
}
如果image
包含完整的图片路径,包括它的路径,我们上面的子字符串中fileName
的输出将是超出实际路径的所有内容,即实际上传的fileName。
答案 3 :(得分:0)
您可以使用子字符串:
select substring(field, length(field) + 1 - N)
即使行的长度在行与行之间不同,此方法也可以使用