#java #jpa #generics #quarkus
#java #jpa #общие #quarkus
Вопрос:
Я запускаю приложение quarkus, используя mvn compile quarkus:dev
и получая ошибку ниже:
Caused by: java.lang.IllegalStateException: Unable to construct the type handle for CLASS bean [types=[org.acme.dao.DaoManager<T extends org.acme.entities.IEntity, I extends java.io.Serializable>, java.lang.Object, org.acme.dao.IDao<T extends org.acme.entities.IEntity, I extends java.io.Serializable>], qualifiers=[@Default, @Any], target=org.acme.dao.DaoManager]: Unsupported bean type: UNRESOLVED_TYPE_VARIABLE, I
Я создал универсальный класс DAO, который реализует универсальный интерфейс IDAO, IDAO принимает только объект JPA, помеченный T extends IEntity
(примечание: I расширяет сериализуемость!)
Компонент помечен ApplicationScoped, потому что включает @Inject EntityManager
:
import org.acme.entities.IEntity;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import java.io.Serializable;
@ApplicationScoped
public class DaoManager<T extends IEntity<I>, I extends Serializable> implements IDao<T,I> {
@Inject
private EntityManager entityManager;
public <T> void save(T entity){
entityManager.persist(entity);
}
}
public interface IEntity<I extends Serializable> extends Serializable {
}
public interface IDao<T extends IEntity<I>, I extends Serializable> {
<T> void save(T entity);
}
Пожалуйста, предложите.
Комментарии:
1. Я думаю, что здесь отсутствует производитель entity manager.
2. @GiorgioD. можете ли вы предложить мне пример?
3. Что-то вроде этого:
public class EntityManagerProducer { @PersistenceContext private EntityManager em; @Produces @RequestScoped public EntityManager getEntityManager() { return em; } }
Ответ №1:
Ваш класс имеет несколько неизвестных типов для Quarkus, и в результате он не может создать из него объект.
Вы можете определить producer для DaoManagers с помощью заинтересованного объекта, тогда Quarkus сможет создавать объекты.
Комментарии:
1. можете ли вы предложить мне пример? Спасибо
2. вы имеете в виду, как javacodegeeks.com/2013/04 /… ?