Простое имя целевой сущности AnyMetaDef Hibernate как MetaValue - PullRequest
0 голосов
/ 06 мая 2020
  @Any(metaColumn = Column(name = "vehicleType"))
  @AnyMetaDef(idType = "long", metaType = "string",
      metaValues = []
  )
  @JoinColumn(name = "vehicleId")
  var vehicle: Vehicle

Когда я использую этот фрагмент кода, данные, сохраненные в таблице базы данных, выглядят так:

vehicle_type | vehicle_id
com.example.Bus   |       10
com.example.Truck |       15

Я хотел бы иметь Bus и Truck ( без пакета префикс ) для сохранения в базе данных.

  @Any(metaColumn = Column(name = "vehicleType"))
  @AnyMetaDef(idType = "long", metaType = "string",
      metaValues = [
        MetaValue(targetEntity = Bus::class, value = "Bus"),
        MetaValue(targetEntity = Truck::class, value = "Truck")
      ]
  )
  @JoinColumn(name = "vehicleId")
  var vehicle: Vehicle

Я могу сделать что-то подобное, и это даст мне точный результат, как и ожидалось.

Но это тесно связано. Мне нужно go и менять MetaDef каждый раз, когда я представляю новый автомобиль. Я предпочитаю сделать определение независимым от связанных классов.

Мои вопросы:

  1. Есть ли возможность сопоставить целевую сущность с ее simpleName?
  2. Есть ли возможность переопределить ::class для моего автомобиля?
...