diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/OneToMany.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/OneToMany.java index af2df69c..944853f2 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/OneToMany.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/OneToMany.java @@ -67,16 +67,18 @@ class OneToMany extends AbstractRelation { return queryWrapper; } + @Override public void join(List selfEntities, List targetObjectList, BaseMapper mapper) { selfEntities.forEach(selfEntity -> { Object selfValue = selfFieldWrapper.get(selfEntity); if (selfValue != null) { + selfValue = selfValue.toString(); Class wrapType = MapperUtil.getWrapType(relationFieldWrapper.getFieldType()); Collection collection = (Collection) ClassUtil.newInstance(wrapType); for (Object targetObject : targetObjectList) { Object targetValue = targetFieldWrapper.get(targetObject); - if (selfValue.equals(targetValue)) { + if (targetValue != null && selfValue.equals(targetValue.toString())) { collection.add(targetObject); } } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/ToOneRelation.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/ToOneRelation.java index 5f429639..19e64812 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/ToOneRelation.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/relation/ToOneRelation.java @@ -27,40 +27,41 @@ import static com.mybatisflex.core.query.QueryMethods.column; class ToOneRelation extends AbstractRelation { - public ToOneRelation(String selfField, String targetField, String dataSource, Class selfEntityClass, Field relationField) { - super(selfField, targetField, dataSource, selfEntityClass, relationField); - } + public ToOneRelation(String selfField, String targetField, String dataSource, Class selfEntityClass, Field relationField) { + super(selfField, targetField, dataSource, selfEntityClass, relationField); + } - @Override - public QueryWrapper toQueryWrapper(List selfEntities) { - Set selfFieldValues = getSelfFieldValues(selfEntities); - if (selfFieldValues.isEmpty()) { - return null; - } - QueryWrapper queryWrapper = QueryWrapper.create().select() - .from(targetTableInfo.getTableNameWithSchema()); - if (selfFieldValues.size() > 1) { - queryWrapper.where(column(targetTableInfo.getColumnByProperty(targetField.getName())).in(selfFieldValues)); - } else { - queryWrapper.where(column(targetTableInfo.getColumnByProperty(targetField.getName())).eq(selfFieldValues.iterator().next())); - } - return queryWrapper; - } + @Override + public QueryWrapper toQueryWrapper(List selfEntities) { + Set selfFieldValues = getSelfFieldValues(selfEntities); + if (selfFieldValues.isEmpty()) { + return null; + } + QueryWrapper queryWrapper = QueryWrapper.create().select() + .from(targetTableInfo.getTableNameWithSchema()); + if (selfFieldValues.size() > 1) { + queryWrapper.where(column(targetTableInfo.getColumnByProperty(targetField.getName())).in(selfFieldValues)); + } else { + queryWrapper.where(column(targetTableInfo.getColumnByProperty(targetField.getName())).eq(selfFieldValues.iterator().next())); + } + return queryWrapper; + } - @Override - public void join(List selfEntities, List targetObjectList, BaseMapper mapper) { - selfEntities.forEach(selfEntity -> { - Object selfValue = selfFieldWrapper.get(selfEntity); - if (selfValue != null) { - for (Object targetObject : targetObjectList) { - Object targetValue = targetFieldWrapper.get(targetObject); - if (selfValue.equals(targetValue)) { - relationFieldWrapper.set(targetObject, selfEntity); - break; - } - } - } - }); - } + @Override + public void join(List selfEntities, List targetObjectList, BaseMapper mapper) { + selfEntities.forEach(selfEntity -> { + Object selfValue = selfFieldWrapper.get(selfEntity); + if (selfValue != null) { + selfValue = selfValue.toString(); + for (Object targetObject : targetObjectList) { + Object targetValue = targetFieldWrapper.get(targetObject); + if (targetValue != null && selfValue.equals(targetValue.toString())) { + relationFieldWrapper.set(targetObject, selfEntity); + break; + } + } + } + }); + } }