JpaRepository中的动态实体名称?

问题描述:

我使用的春天JpaRepository,并希望提供一个通用的接口,一般得到的SQL查询中使用el表达式如下:JpaRepository中的动态实体名称?

public interface BaseRepo <B> extends CrudRepository<B, Long> { 
    @Query("SELECT b FROM #{#entityName} b) 
    List<B> findAllB(); 
} 

@Entity 
class Booking {} //results in "booking" 

这工作得很好!但是如果期望的实体包含下划线呢?我如何定义el表达式如何翻译实体名称的策略?

@Entity 
@Table(name = "booking_entity") 
class BookingEntity {} //results in "bookingentity", missing underscore! 
+0

'@ Query'应该放在'JPQL'中,它应该*使用'BookingEntity',而不是'booking_entity'。 (例如)hibernate使用'@ Table'将JPQL映射到实际的SQL查询。 – beerbajay 2015-04-02 10:29:45

您可以使用注释@Entity(name="booking_entity")