Создание объектов Hibernate с помощью Javassist

Наше требование требует, чтобы 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. Есть ли какой-либо другой метод или какое-либо другое обходное решение для решения этой проблемы?


person Manny    schedule 16.07.2014    source источник
comment
Вы должны посмотреть на следующий вопрос: stackoverflow.com/questions/3596723/   -  person user3679868    schedule 16.07.2014


Ответы (1)


CtMethod наследует CtBehavior #setGenericSignature().
Перейти к CtClass javadoc для примера кода.

person Luca Basso Ricci    schedule 25.07.2014