diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
index 25437042937468652f5f0e46b1c9c93290f6e9a6..2ef252c32197b580873f7bd173a2c33bad9bf7a7 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
@@ -1297,9 +1297,21 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
         if ("BigDecimal".equals(codegenModel.dataType)) {
             codegenModel.imports.add("BigDecimal");
         }
+
+        // additional import for different cases
+        addAdditionalImports(codegenModel, codegenModel.oneOf);
+        addAdditionalImports(codegenModel, codegenModel.anyOf);
         return codegenModel;
     }
 
+    private void addAdditionalImports(CodegenModel model, Set<String> dataTypeSet) {
+        for (String dataType : dataTypeSet) {
+            if (null != importMapping().get(dataType)) {
+                model.imports.add(dataType);
+            }
+        }
+    }
+
     @Override
     public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
         if (model.getIsClassnameSanitized() && additionalProperties.containsKey(JACKSON)) {
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java
index 2edaa5024e70c3ab04abc901c90242b55da203cd..11956bdec172cf38d80013c7f3d1448746b64a51 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java
@@ -855,6 +855,20 @@ public class AbstractJavaCodegenTest {
         Assert.assertEquals(fakeJavaCodegen.getTestFolder(), "src/test/java");
     }
 
+    @Test
+    public void testOneOfModelImports() throws Exception {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOf_nonPrimitive.yaml");
+        final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
+        codegen.preprocessOpenAPI(openAPI);
+
+        Schema<?> schema = openAPI.getComponents().getSchemas().get("Example");
+        CodegenModel cm = codegen.fromModel("Example", schema);
+        Assert.assertEquals(cm.imports.size(), 3);
+        Assert.assertTrue(cm.imports.contains("BigDecimal"));
+        Assert.assertTrue(cm.imports.contains("Date"));
+        Assert.assertTrue(cm.imports.contains("UUID"));
+    }
+
     private static Schema<?> createObjectSchemaWithMinItems() {
         return new ObjectSchema()
                 .addProperties("id", new IntegerSchema().format("int32"))
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_nonPrimitive.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_nonPrimitive.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..fe9d58f0dd937534e0158963699e7d2a9d1f0075
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_nonPrimitive.yaml
@@ -0,0 +1,29 @@
+openapi: 3.0.1
+info:
+  version: 1.0.0
+  title: Example - oneOf data type
+  license:
+    name: MIT
+servers:
+  - url: http://api.example.xyz/v1
+paths:
+  /example:
+    get:
+      operationId: list
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Example"
+components:
+  schemas:
+    Example:
+      oneOf:
+      - type: string
+        format: uuid
+      - type: string
+        format: date-time
+      - type: integer
+      - type: number