graphql-java-tools icon indicating copy to clipboard operation
graphql-java-tools copied to clipboard

Two different classes used for type when model has relationship

Open twogoods opened this issue 3 years ago • 6 comments

type Mutation {
  demoflowtwo_entities_createRepairApply(body: RepairApplyInput): RepairApply
  demoflowtwo_entities_createRepairMan(body: RepairManInput): RepairMan
  demoflowtwo_entities_deleteRepairApply(id: Long): Long
  demoflowtwo_entities_deleteRepairMan(id: Long): Long
  demoflowtwo_entities_updateRepairApply(body: RepairApplyInput): RepairApply
  demoflowtwo_entities_updateRepairMan(body: RepairManInput): RepairMan
}

type Query {
  demoflowtwo_entities_getAllRepairApplies(query: String): [RepairApply]
  demoflowtwo_entities_getAllRepairMen(query: String): [RepairMan]

  demoflowtwo_entities_getRepairApply(id: Long): RepairApply
  demoflowtwo_entities_getRepairMan(id: Long): RepairMan
}

type RepairApply {
  id: ID
  repairMan: RepairMan
}

type RepairMan {
  id: ID
  userName: String
}

input RepairApplyInput {
  id: ID
  repairMan: RepairManInput
}

input RepairManInput {
  id: ID
  userName: String
}

and I have classes:

public class RepairApplyMutation implements GraphQLMutationResolver 
public class RepairApplyQuery implements GraphQLQueryResolver
public class RepairManMutation implements GraphQLMutationResolver
public class RepairManQuery implements GraphQLQueryResolver

error:

Caused by: graphql.kickstart.tools.SchemaClassScannerError: Two different classes used for type RepairManInput:
- class com.flow.demo.domain.RepairApply:
|   input object InputValueDefinition{name='repairMan', type=TypeName{name='RepairManInput'}, defaultValue=null, directives=[]}

- class com.flow.demo.domain.RepairMan:
|   parameter 0 of method public com.flow.demo.domain.RepairMan com.flow.demo.graphql.RepairManMutation.demoflowtwo_entities_createRepairMan(com.flow.demo.domain.RepairMan)

I don't want add RepairManInput2 definition like

input RepairApplyInput {
  id: ID
  repairMan: RepairManInput2
}

input RepairManInput2 {
  id: ID
  userName: String
}

How to solve this error?

twogoods avatar Oct 07 '20 12:10 twogoods

Did you solve it?

nnrudakov avatar Feb 24 '21 20:02 nnrudakov

Did you solve it?

use annother name in schema,like this

input RepairApplyInput {
  id: ID
  repairMan: RepairManInput2
}

input RepairManInput2 {
  id: ID
  userName: String
}

input RepairManInput {
  id: ID
  userName: String
}

It work but not a good solution

twogoods avatar Feb 26 '21 02:02 twogoods

Has there been any update on this issue? It's causing a decent amount of redundancy in my graphql schema definition.

cornwe19 avatar Dec 02 '21 20:12 cornwe19

Here too

quirinpa avatar Mar 14 '22 15:03 quirinpa

The same problem too

kirill071992 avatar Mar 22 '22 16:03 kirill071992

me too

DaqingshanAimi avatar Dec 08 '22 08:12 DaqingshanAimi