HHH-17765 Support some special chars in query method queries
This commit is contained in:
parent
104eb3cf32
commit
13678e4124
|
@ -12,6 +12,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.lang.model.element.AnnotationMirror;
|
||||
import javax.lang.model.element.AnnotationValue;
|
||||
import javax.lang.model.element.Element;
|
||||
|
@ -1457,7 +1458,7 @@ public class AnnotationMetaEntity extends AnnotationMeta {
|
|||
}
|
||||
|
||||
private static boolean parameterIsMissing(String hql, int i, String param, String type) {
|
||||
return !hql.matches(".*(:" + param + "|\\?" + i + ")\\b.*")
|
||||
return !Pattern.compile( ".*(:" + param + "|\\?" + i + ")\\b.*", Pattern.DOTALL ).matcher( hql ).matches()
|
||||
&& !isSessionParameter(type)
|
||||
&& !isPageParam(type)
|
||||
&& !isOrderParam(type);
|
||||
|
|
|
@ -241,13 +241,31 @@ public class QueryMethod extends AbstractQueryMethod {
|
|||
|
||||
@Override
|
||||
public String getAttributeNameDeclarationString() {
|
||||
return new StringBuilder()
|
||||
.append("static final String ")
|
||||
.append(getConstantName())
|
||||
.append(" = \"")
|
||||
.append(queryString)
|
||||
.append("\";")
|
||||
.toString();
|
||||
StringBuilder sb = new StringBuilder(queryString.length() + 100)
|
||||
.append( "static final String " )
|
||||
.append( getConstantName() )
|
||||
.append( " = \"" );
|
||||
for ( int i = 0; i < queryString.length(); i++ ) {
|
||||
final char c = queryString.charAt( i );
|
||||
switch ( c ) {
|
||||
case '\r':
|
||||
sb.append( "\\r" );
|
||||
break;
|
||||
case '\n':
|
||||
sb.append( "\\n" );
|
||||
break;
|
||||
case '\\':
|
||||
sb.append( "\\\\" );
|
||||
break;
|
||||
case '"':
|
||||
sb.append( "\\\"" );
|
||||
break;
|
||||
default:
|
||||
sb.append( c );
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sb.append("\";").toString();
|
||||
}
|
||||
|
||||
private String getConstantName() {
|
||||
|
|
|
@ -112,4 +112,7 @@ public interface Dao {
|
|||
|
||||
@HQL("select avg(pages) from Book")
|
||||
double averagePageCount();
|
||||
|
||||
@HQL("select b\nfrom Book b\nwhere b.isbn = :isbn")
|
||||
Book findByIsbnMultiline(String isbn);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue