Skip to content

Commit 9b6a419

Browse files
authored
Fix: An error occurs if primitive is included (#1048) (#1049)
1 parent a7a57e3 commit 9b6a419

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

doma-processor/src/main/java/org/seasar/doma/internal/apt/meta/entity/EntityPropertyNameCollector.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,18 @@ private void collectNames(TypeMirror type, Set<String> names) {
3434
t != null && t.asType().getKind() != TypeKind.NONE;
3535
t = ctx.getMoreTypes().toTypeElement(t.getSuperclass())) {
3636
for (VariableElement field : ElementFilter.fieldsIn(t.getEnclosedElements())) {
37+
if (!isPersistent(field)) {
38+
continue;
39+
}
40+
String name = field.getSimpleName().toString();
3741
TypeElement filedTypeElement = ctx.getMoreTypes().toTypeElement(field.asType());
42+
if (filedTypeElement == null) {
43+
names.add(name);
44+
continue;
45+
}
3846
EmbeddableAnnot embeddableAnnot = ctx.getAnnotations().newEmbeddableAnnot(filedTypeElement);
39-
String name = field.getSimpleName().toString();
4047
if (embeddableAnnot == null) {
41-
if (isPersistent(field)) {
42-
names.add(name);
43-
}
48+
names.add(name);
4449
} else {
4550
EmbeddableMetaFactory embeddableMetaFactory = new EmbeddableMetaFactory(ctx);
4651
EmbeddableMeta embeddableMeta =

doma-processor/src/test/java/org/seasar/doma/internal/apt/processor/entity/ImmutableUser.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,24 @@ public class ImmutableUser {
88

99
@Id private final Integer id;
1010

11+
private final int age;
12+
1113
private final UserAddress address;
1214

13-
public ImmutableUser(Integer id, UserAddress address) {
15+
public ImmutableUser(Integer id, int age, UserAddress address) {
1416
this.id = id;
17+
this.age = age;
1518
this.address = address;
1619
}
1720

1821
public Integer getId() {
1922
return id;
2023
}
2124

25+
public int getAge() {
26+
return age;
27+
}
28+
2229
public UserAddress getAddress() {
2330
return address;
2431
}

doma-processor/src/test/resources/org/seasar/doma/internal/apt/processor/entity/EntityProcessorTest_ImmutableUser.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ public final class _ImmutableUser extends org.seasar.doma.jdbc.entity.AbstractEn
4444
__tableName = "";
4545
__isQuoteRequired = false;
4646
java.util.List<org.seasar.doma.jdbc.entity.EntityPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __idList = new java.util.ArrayList<>();
47-
java.util.List<org.seasar.doma.jdbc.entity.EntityPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __list = new java.util.ArrayList<>(2);
48-
java.util.Map<String, org.seasar.doma.jdbc.entity.EntityPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __map = new java.util.LinkedHashMap<>(2);
49-
java.util.Map<String, org.seasar.doma.jdbc.entity.EmbeddedPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __embeddedMap = new java.util.LinkedHashMap<>(2);
47+
java.util.List<org.seasar.doma.jdbc.entity.EntityPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __list = new java.util.ArrayList<>(3);
48+
java.util.Map<String, org.seasar.doma.jdbc.entity.EntityPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __map = new java.util.LinkedHashMap<>(3);
49+
java.util.Map<String, org.seasar.doma.jdbc.entity.EmbeddedPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __embeddedMap = new java.util.LinkedHashMap<>(3);
5050
initializeMaps(__map, __embeddedMap);
5151
initializeIdList(__map, __idList);
5252
initializeList(__map, __list);
@@ -58,6 +58,7 @@ public final class _ImmutableUser extends org.seasar.doma.jdbc.entity.AbstractEn
5858

5959
private void initializeMaps(java.util.Map<String, org.seasar.doma.jdbc.entity.EntityPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __map, java.util.Map<String, org.seasar.doma.jdbc.entity.EmbeddedPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __embeddedMap) {
6060
__map.put("id", new org.seasar.doma.jdbc.entity.AssignedIdPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, java.lang.Integer, java.lang.Integer>(org.seasar.doma.internal.apt.processor.entity.ImmutableUser.class, org.seasar.doma.internal.jdbc.scalar.BasicScalarSuppliers.ofInteger(), "id", "", __namingType, false));
61+
__map.put("age", new org.seasar.doma.jdbc.entity.DefaultPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, java.lang.Integer, java.lang.Integer>(org.seasar.doma.internal.apt.processor.entity.ImmutableUser.class, org.seasar.doma.internal.jdbc.scalar.BasicScalarSuppliers.ofPrimitiveInt(), "age", "", __namingType, true, true, false));
6162
__embeddedMap.put("address", new org.seasar.doma.jdbc.entity.EmbeddedPropertyType<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, org.seasar.doma.internal.apt.processor.entity.UserAddress>("address", org.seasar.doma.internal.apt.processor.entity.ImmutableUser.class, org.seasar.doma.internal.apt.processor.entity._UserAddress.getSingletonInternal().getEmbeddablePropertyTypes("address", org.seasar.doma.internal.apt.processor.entity.ImmutableUser.class, __namingType)));
6263
__map.putAll(__embeddedMap.get("address").getEmbeddablePropertyTypeMap());
6364
}
@@ -199,6 +200,7 @@ public final class _ImmutableUser extends org.seasar.doma.jdbc.entity.AbstractEn
199200
public org.seasar.doma.internal.apt.processor.entity.ImmutableUser newEntity(java.util.Map<String, org.seasar.doma.jdbc.entity.Property<org.seasar.doma.internal.apt.processor.entity.ImmutableUser, ?>> __args) {
200201
return new org.seasar.doma.internal.apt.processor.entity.ImmutableUser(
201202
(java.lang.Integer)(__args.get("id") != null ? __args.get("id").get() : null),
203+
(java.lang.Integer)(__args.get("age") != null ? __args.get("age").get() : null),
202204
org.seasar.doma.internal.apt.processor.entity._UserAddress.getSingletonInternal().newEmbeddable("address", __args));
203205
}
204206

0 commit comments

Comments
 (0)