• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

759
Vistas
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?

about 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

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; }
about 3 years ago · Santiago Trujillo Denunciar

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(); }
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda