@@ -101,30 +101,28 @@ public PropertyQuery unique() {
101
101
return this ;
102
102
}
103
103
104
- public PropertyQuery nullValue (long nullValue ) {
105
- enableNull = true ;
106
- this .nullValueLong = nullValue ;
107
- return this ;
108
- }
109
-
110
- public PropertyQuery nullValue (float nullValue ) {
111
- enableNull = true ;
112
- this .nullValueFloat = nullValue ;
113
- return this ;
114
- }
115
-
116
- public PropertyQuery nullValue (double nullValue ) {
117
- enableNull = true ;
118
- this .nullValueDouble = nullValue ;
119
- return this ;
120
- }
121
-
122
- public PropertyQuery nullValue (String nullValue ) {
104
+ /**
105
+ * By default, null values are not returned by find methods (primitive arrays cannot contains nulls).
106
+ * However, using this function, you can define an alternative value that will be returned for null values.
107
+ * E.g. -1 for ins/longs or "NULL" for strings.
108
+ */
109
+ public PropertyQuery nullValue (Object nullValue ) {
123
110
if (nullValue == null ) {
124
- throw new IllegalArgumentException ("Null strings are not allowed (yet) " );
111
+ throw new IllegalArgumentException ("Null values are not allowed" );
125
112
}
113
+ boolean isString = nullValue instanceof String ;
114
+ boolean isNumber = nullValue instanceof Number ;
115
+ if (!isString && !isNumber ) {
116
+ throw new IllegalArgumentException ("Unsupported value class: " + nullValue .getClass ());
117
+ }
118
+
126
119
enableNull = true ;
127
- this .nullValueString = nullValue ;
120
+ nullValueString = isString ? (String ) nullValue : null ;
121
+ boolean isFloat = nullValue instanceof Float ;
122
+ nullValueFloat = isFloat ? (Float ) nullValue : 0 ;
123
+ boolean isDouble = nullValue instanceof Double ;
124
+ nullValueDouble = isDouble ? (Double ) nullValue : 0 ;
125
+ nullValueLong = isNumber && !isFloat && !isDouble ? ((Number ) nullValue ).longValue () : 0 ;
128
126
return this ;
129
127
}
130
128
0 commit comments