Наше требование требует, чтобы Pojos генерировались на основе пользовательского ввода. Таким образом, классы создаются во время выполнения на основе входных данных, предоставленных пользователями. Мы создавали объект с помощью Javassist и использовали с ним аннотации для создания всего необходимого сопоставления. Например, следующее создается без проблем, потому что не используются дженерики:
@ManyToOne(cascade = CascadeType.ALL)
public Address getUserAddress() {
return this.userAddress;
}
Это прекрасно создается, когда мы используем Javassist. Однако, когда мы пытаемся создать аннотации для сопоставления «один ко многим», Javassist не работает, поскольку не поддерживает дженерики.
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
public Set<UserRecord> getUserRecords() {
return this.userRecords;
}
Это не работает, потому что нам нужно установить тип возвращаемого значения «Set», который нельзя создать с помощью Javassist. Я также попытался использовать общий метод set, используя следующий
ctfield.setGenericSignature(java.lang.String sig)
До сих пор мне не удалось создать класс с возвращаемым типом дженериков с помощью Javassist. Есть ли какой-либо другой метод или какое-либо другое обходное решение для решения этой проблемы?