OpenJPA (4)
6 Query
6.1 JPQL Queries
6.1.1Query Basics
??? 当查询结果不仅包含entity,而且包含value type的时候,可以在SqlResultSetMapping中指定@ColumnResult,例如:
虽然很俗,但是我还是要说, LZ辛苦了// set the actual field in the instance int set = OpenJPAStateManager.SET_USER; switch (fmd.getDeclaredTypeCode()) { case JavaTypes.BOOLEAN: sm.settingBooleanField(into, i, sm.fetchBooleanField(i), val == null ? false : ((Boolean) val).booleanValue(), set); break; case JavaTypes.BYTE: sm.settingByteField(into, i, sm.fetchByteField(i), val == null ? 0 : ((Number) val).byteValue(), set); break; case JavaTypes.CHAR: sm.settingCharField(into, i, sm.fetchCharField(i), val == null ? 0 : val.toString().charAt(0), set); break; case JavaTypes.DOUBLE: sm.settingDoubleField(into, i, sm.fetchDoubleField(i), val == null ? 0 : ((Number) val).doubleValue(), set); break; case JavaTypes.FLOAT: sm.settingFloatField(into, i, sm.fetchFloatField(i), val == null ? 0 : ((Number) val).floatValue(), set); break; case JavaTypes.INT: sm.settingIntField(into, i, sm.fetchIntField(i), val == null ? 0 : ((Number) val).intValue(), set); break; case JavaTypes.LONG: sm.settingLongField(into, i, sm.fetchLongField(i), val == null ? 0 : ((Number) val).longValue(), set); break; case JavaTypes.SHORT: sm.settingShortField(into, i, sm.fetchShortField(i), val == null ? 0 : ((Number) val).shortValue(), set); break; case JavaTypes.STRING: sm.settingStringField(into, i, sm.fetchStringField(i), val == null ? null : val.toString(), set); break; case JavaTypes.DATE: case JavaTypes.NUMBER: case JavaTypes.BOOLEAN_OBJ: case JavaTypes.BYTE_OBJ: case JavaTypes.CHAR_OBJ: case JavaTypes.DOUBLE_OBJ: case JavaTypes.FLOAT_OBJ: case JavaTypes.INT_OBJ: case JavaTypes.LONG_OBJ: case JavaTypes.SHORT_OBJ: case JavaTypes.BIGDECIMAL: case JavaTypes.BIGINTEGER: case JavaTypes.LOCALE: case JavaTypes.OBJECT: case JavaTypes.OID: sm.settingObjectField(into, i, sm.fetchObjectField(i), val, set); break; default: throw new UserException(_loc.get("only-update-primitives")); }
// set the actual field in the instance int set = OpenJPAStateManager.SET_USER; switch (fmd.getDeclaredTypeCode()) { case JavaTypes.BOOLEAN: sm.settingBooleanField(into, i, sm.fetchBooleanField(i), val == null ? false : ((Boolean) val).booleanValue(), set); break; case JavaTypes.BYTE: sm.settingByteField(into, i, sm.fetchByteField(i), val == null ? 0 : ((Number) val).byteValue(), set); break; case JavaTypes.CHAR: sm.settingCharField(into, i, sm.fetchCharField(i), val == null ? 0 : val.toString().charAt(0), set); break; case JavaTypes.DOUBLE: sm.settingDoubleField(into, i, sm.fetchDoubleField(i), val == null ? 0 : ((Number) val).doubleValue(), set); break; case JavaTypes.FLOAT: sm.settingFloatField(into, i, sm.fetchFloatField(i), val == null ? 0 : ((Number) val).floatValue(), set); break; case JavaTypes.INT: sm.settingIntField(into, i, sm.fetchIntField(i), val == null ? 0 : ((Number) val).intValue(), set); break; case JavaTypes.LONG: sm.settingLongField(into, i, sm.fetchLongField(i), val == null ? 0 : ((Number) val).longValue(), set); break; case JavaTypes.SHORT: sm.settingShortField(into, i, sm.fetchShortField(i), val == null ? 0 : ((Number) val).shortValue(), set); break; case JavaTypes.STRING: sm.settingStringField(into, i, sm.fetchStringField(i), val == null ? null : val.toString(), set); break; case JavaTypes.DATE: case JavaTypes.NUMBER: case JavaTypes.BOOLEAN_OBJ: case JavaTypes.BYTE_OBJ: case JavaTypes.CHAR_OBJ: case JavaTypes.DOUBLE_OBJ: case JavaTypes.FLOAT_OBJ: case JavaTypes.INT_OBJ: case JavaTypes.LONG_OBJ: case JavaTypes.SHORT_OBJ: case JavaTypes.BIGDECIMAL: case JavaTypes.BIGINTEGER: case JavaTypes.LOCALE: case JavaTypes.OBJECT: case JavaTypes.OID: sm.settingObjectField(into, i, sm.fetchObjectField(i), val, set); break; default: throw new UserException(_loc.get("only-update-primitives")); }