Skip to content

Commit fa25d8b

Browse files
authored
Fix returning wrong type for Optional properties on selecting (#628)
1 parent ca347a6 commit fa25d8b

File tree

12 files changed

+64
-1
lines changed

12 files changed

+64
-1
lines changed

doma-core/src/main/java/org/seasar/doma/internal/jdbc/scalar/BasicScalar.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ public BASIC get() {
3535
return wrapper.get();
3636
}
3737

38+
@Override
39+
public Object getAsNonOptional() {
40+
return get();
41+
}
42+
3843
@Override
3944
public BASIC getDefault() {
4045
return wrapper.getDefault();

doma-core/src/main/java/org/seasar/doma/internal/jdbc/scalar/OptionalBasicScalar.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public Optional<BASIC> get() {
3737
return Optional.ofNullable(wrapper.get());
3838
}
3939

40+
@Override
41+
public Object getAsNonOptional() {
42+
return get().orElse(null);
43+
}
44+
4045
@Override
4146
public Optional<BASIC> getDefault() {
4247
return Optional.empty();

doma-core/src/main/java/org/seasar/doma/internal/jdbc/scalar/OptionalDoubleScalar.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public OptionalDouble get() {
2929
return value != null ? OptionalDouble.of(value) : OptionalDouble.empty();
3030
}
3131

32+
@Override
33+
public Object getAsNonOptional() {
34+
return get().orElse(0d);
35+
}
36+
3237
@Override
3338
public OptionalDouble getDefault() {
3439
return OptionalDouble.empty();

doma-core/src/main/java/org/seasar/doma/internal/jdbc/scalar/OptionalIntScalar.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public OptionalInt get() {
2929
return value != null ? OptionalInt.of(value) : OptionalInt.empty();
3030
}
3131

32+
@Override
33+
public Object getAsNonOptional() {
34+
return get().orElse(0);
35+
}
36+
3237
@Override
3338
public OptionalInt getDefault() {
3439
return OptionalInt.empty();

doma-core/src/main/java/org/seasar/doma/internal/jdbc/scalar/OptionalLongScalar.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public OptionalLong get() {
2929
return value != null ? OptionalLong.of(value) : OptionalLong.empty();
3030
}
3131

32+
@Override
33+
public Object getAsNonOptional() {
34+
return get().orElse(0L);
35+
}
36+
3237
@Override
3338
public OptionalLong getDefault() {
3439
return OptionalLong.empty();

doma-core/src/main/java/org/seasar/doma/internal/jdbc/scalar/Scalar.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ public interface Scalar<BASIC, CONTAINER> extends JdbcMappable<BASIC> {
88

99
CONTAINER get();
1010

11+
Object getAsNonOptional();
12+
1113
CONTAINER getDefault();
1214

1315
void set(CONTAINER container);

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/command/MappedResultProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public <PROPERTY> PROPERTY get(PropertyMetamodel<PROPERTY> propertyMetamodel) {
7474
} catch (SQLException e) {
7575
throw new UncheckedSQLException(e);
7676
}
77-
return (PROPERTY) property.get();
77+
return (PROPERTY) property.getAsNonOptional();
7878
}
7979
};
8080
try {

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/expression/BasicPropertyTypes.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ public Object get() {
114114
return scalar.get();
115115
}
116116

117+
@Override
118+
public Object getAsNonOptional() {
119+
return scalar.getAsNonOptional();
120+
}
121+
117122
@Override
118123
public Property<Object, BASIC> load(Object o) {
119124
throw new UnsupportedOperationException();

doma-core/src/main/java/org/seasar/doma/jdbc/domain/AbstractDomainType.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ public DOMAIN get() {
6767
return newDomain(wrapper.get());
6868
}
6969

70+
@Override
71+
public Object getAsNonOptional() {
72+
return get();
73+
}
74+
7075
@Override
7176
public DOMAIN getDefault() {
7277
return null;
@@ -118,6 +123,11 @@ public Optional<DOMAIN> get() {
118123
return Optional.of(newDomain(value));
119124
}
120125

126+
@Override
127+
public Object getAsNonOptional() {
128+
return get().orElse(null);
129+
}
130+
121131
@Override
122132
public Optional<DOMAIN> getDefault() {
123133
return getDefaultInternal();

doma-core/src/main/java/org/seasar/doma/jdbc/entity/DefaultPropertyType.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ public Object get() {
200200
return scalar.get();
201201
}
202202

203+
@Override
204+
public Object getAsNonOptional() {
205+
return scalar.getAsNonOptional();
206+
}
207+
203208
@Override
204209
public Property<ENTITY, BASIC> load(ENTITY entity) {
205210
Object value = field.getValue(entity);

0 commit comments

Comments
 (0)