gpt4 book ai didi

java - Spring - AWS(无 Spring Boot): java. lang.IllegalArgumentException:不是托管类型

转载 作者:行者123 更新时间:2023-11-30 02:13:13 25 4
gpt4 key购买 nike

我有一个实体管理器存储库,设置如下:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(datasource());
em.setJpaProperties(hibernateProperties(dynamicConfiguration));
em.setPackagesToScan(new String[] {"<my model package>"});
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
return em;
}

我的实体类定义如下:

@Entity
@Table(name = "model")
@Getter
@Setter
@NoArgsConstructor
public class Model {

@Column(name = "serialNumber")
private String serialNumber;

@Column(name = "region")
private String region;

@Column(name = "created")
private Date created;

@Column(name = "updated")
private Date updated;

@Column(name = "status")
private String status;


@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Long id;

}

我的存储库 bean 是这样的:

@Repository
public interface ModelRepository extends JpaRepository<Model, Long>, ModelCustomRepository<Model, Long> {

}

我的自定义存储库

@NoRepositoryBean
public interface ModelCustomRepository<E, L extends Number>{

List<Model> getModelsSkipUpdated();
}

我的自定义存储库实现

public class ModelCustomRepositoryImpl implements ModelCustomRepository<Model, Long> {

@Autowired
private DynamicConfiguration dynamicConfiguration;

@Qualifier("entityManageFactory")
@Autowired
private EntityManagerFactory entityManagerFactory;

@Override
public List<Model> getModelsForProvisioning() {
Integer limit = dynamicConfiguration.getIntProperty("model.limit", 25).get();
Query modelQuery = entityManagerFactory.createEntityManager().createNativeQuery(
"SELECT * FROM Model WHERE status = :status LIMIT :limit for update skip locked",
Model.class);
modelQuery.setParameter("status", NOT_PROCESSED.name());
modelQuery.setParameter("limit", limit);
return modelQuery.getResultList();
}
}

我收到以下错误,我不明白为什么会收到错误

Caused by: java.lang.IllegalArgumentException: Not a managed type: class <package>.Model
at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:472)
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:73)
at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:66)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:181)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:119)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:102)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:298)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$3(RepositoryFactoryBeanSupport.java:287)
at org.springframework.data.util.Lazy.getNullable(Lazy.java:141)
at org.springframework.data.util.Lazy.get(Lazy.java:63)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:290)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:102)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706)
... 54 more

我不使用 spring-boot,因为这是一个 AWS lambda。有办法解决这个问题吗?因此没有@EntityScan。

我的模型类与实体管理器工厂 bean 生成类不在同一个包中。

顺便说一句,如果有办法在 @Repository bean 中获取跳过锁定查询,也请让我知道。

最佳答案

根据我对您的问题的评论:由于您无法使用 @EntityScan,也许您需要提供一个 persistence.xml 描述您的实体。

关于java - Spring - AWS(无 Spring Boot): java. lang.IllegalArgumentException:不是托管类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49482745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com