有没有办法根据Spring中的活动配置文件切换注释

时间:2018-03-13 07:39:57

标签: java spring hibernate

在我们的项目中,我们有数据库定义,如:

@Entity
@Table(name = "\"com.sap.s4hc.fnd.circ::PRECHECK_ITEM\"")
@Cacheable(false)
public class PrecheckItem extends AdminField implements Comparable<PrecheckItem>, Serializable 

但是,由于数据库命名方案遵循SAP HANA的约定(namespace::table_name),因此它与Spring Boot / Hibernate不能很好地兼容。生产环境中的数据库是使用JPA / Hibernate以外的方法创建的。

当前的实现在云上运行良好,但在使用H2数据库的本地开发环境中,我相信Hibernate不支持当前的命名策略。因此总是抛出Table "com.sap.s4hc.fnd.circ::PRECHECK_ITEM" not found;

显然,我可以准备好两套不同的实体类来缓解这个问题PrecheckItemLocalPrecheckItemCloud,其中我使用配置文件分别激活它们,但如果我可以的话,那将是非常好的简单地:

@Entity
@Profile ("cloud") {@Table(name = "\"com.sap.s4hc.fnd.circ::PRECHECK_ITEM\"")}
@Cacheable(false)
public class PrecheckItem extends AdminField implements Comparable<PrecheckItem>, Serializable

这样的实现是否可用?

1 个答案:

答案 0 :(得分:0)

不幸的是到目前为止,没有办法以你想要的方式做到这一点。所以,唯一的方法是你提到的那个有两组不同的实体。