我使用Spring 4,Hibernate 4和WebSphere 8.5.7。有这样一堂课:
@Entity
@Table(name = "APPLICATION", schema = "NEW_SCHEMA")
public class Application {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE_NEW")
@SequenceGenerator(name = "SEQUENCE_NEW", schema = "NEW_SCHEMA", sequenceName = "SEQUENCE_NEW", allocationSize = 1, initialValue = 1)
@Column(name = "ID")
@Getter @Setter private Long id;
我希望能够通过JNDI名称更改@Table签名中的架构。我希望得到这样的东西:
@Table(name = "APPLICATION", schema = "${schema.jndi}")
假设Websphere将提供${schema.jndi}
。
另一方面,在业务环境中,任务看起来如下。我需要在整个项目代码(Java,xml,props)中排除任何关于模式的提及。并且可以直接从WebShpere更改架构。
实施解决方案的最简单方法是什么?
任何建议都将不胜感激。
答案 0 :(得分:0)
如果要为整个应用程序(针对每个实体)配置架构,可以在Hibernate配置文件中执行该操作(通常WAS将引用此配置文件)
<property name="hibernate.default_schema">myschema</property>
答案 1 :(得分:0)
IBM WebSphere Application Server提供数据源配置,允许您设置默认架构。 通过左侧菜单栏检查以下内容:
资源 - &gt;数据来源 - &gt;您的DataSource - &gt;附加属性 - &gt;自定义属性
查找 &#39; currentSchema&#39; 属性,并将其值更改为所需的架构。请记住保存新配置并测试连接,以确保在群集环境中进行节点同步。 此外,它可能需要重新启动您的应用程序服务器才能看到新的更改。
在这种情况下,您无需在整个项目代码中提及架构名称。