• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

720
Views
Spring Boot: mapeo de entidades desde un contenedor externo

Tengo algunos problemas con Spring Boot, Spring Data y tengo entidades en un contenedor externo. ¡Cualquier ayuda sería muy apreciada!

Mi repositorio de datos de Sprint se ve así:

 @Repository public interface MyFileRepository extends PagingAndSortingRepository<MyFile, Long> { @Modifying @Transactional @Query("Delete from MyFile f where f.created < ?1") long deleteOldEntities(Date cutoffDate); }

Mi entidad, que está en otro frasco, se ve completamente así:

 @Entity @SequenceGenerator( name = "SequenceIdGenerator", sequenceName = "SEQ_ID_MY_FILE", allocationSize = 20 ) @Table( name = "MYFILE_TABLE" ) public class MyFile extends BaseEntity { private long id; private byte[] data; [...] public MyFile() {} @Id @Column( name = "id", nullable = false ) @GeneratedValue( generator = "SequenceIdGenerator" ) public long getId() { return this.id; } public void setId(long id) { this.id = id; } [...]

}

Y la BaseEntity se ve así:

 @MappedSuperclass public abstract class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; private static final Charset UTF_8 = Charset.forName("UTF-8"); private Date created = null; private Date updated = null; public BaseEntity() {} @Column( name = "created" ) @Temporal(TemporalType.TIMESTAMP) public Date getCreated() { return this.created == null?null:new Date(this.created.getTime()); } public void setCreated(Date created) { if(created != null) { this.created = new Date(created.getTime()); } }

Entonces, cuando trato de ejecutar este código, obtengo un seguimiento de pila largo que básicamente termina con:

 Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: MyFile is not mapped [Delete from MyFile f where f.created < ?1]

Creo que esto puede tener algo que ver con la configuración de Spring Boot. El contenedor externo no tiene @SpringBootApplication en ninguna parte. Básicamente es solo un frasco con todas mis Entidades.

Sin embargo, mi tarro de aplicaciones tiene esto:

 @SpringBootApplication @EntityScan("myapp.service.dao.entity") --> This is the package where all my entities are located. public class CommonApplication { }

¿Cuál es mi error?

almost 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Para escanear entidades que residen en jar, debe configurar el campo packagesToScan de LocalSessionFactory.

 @Bean public LocalSessionFactoryBean sessionFactory(DataSource dataSource) { LocalSessionFactoryBean localSessionFactory = new LocalSessionFactoryBean(); localSessionFactory.setDataSource(dataSource); localSessionFactory .setPackagesToScan(new String[]{"myapp.service.dao.entity", "com.application.entity"}); return localSessionFactory; }
almost 3 years ago · Santiago Trujillo Report

0

Conseguí que esto funcionara usando el siguiente bean para configurar el escaneo de paquetes:

 @Bean public EntityManagerFactory entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setGenerateDdl(false); vendorAdapter.setShowSql(false); vendorAdapter.setDatabase(Database.MYSQL); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("add packages here"); return factory.getObject(); }
almost 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error