如何在@GenericGenerator注解中显式指定schema名称?
解决方案
你可以通过以下两种任意一种方式为SequenceStyleGenerator指定schema:
- 方式1:直接在序列名称中拼接schema前缀
无需新增参数,直接修改sequence_name的参数值,格式为{目标schema名}.{序列名}即可,示例:@org.hibernate.annotations.Parameter(name = "sequence_name",value = "你指定的schema名.PNO_SEQ") - 方式2:新增schema专属配置参数
Hibernate的SequenceStyleGenerator原生支持schema配置项,你只需在参数列表中新增对应配置即可,优先级高于全局默认的schema配置,修改后的完整代码如下:
注意如果你的数据库对标识符大小写敏感,需要保证配置的schema名称、序列名称和数据库中实际的名称大小写完全匹配。public class PMEntity { @Id @GeneratedValue (strategy = GenerationType.SEQUENCE, generator = "PNO_SEQ") @GenericGenerator(name = "PNO_SEQ", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = { @org.hibernate.annotations.Parameter(name = "sequence_name",value = "PNO_SEQ"), // 新增这行配置指定schema @org.hibernate.annotations.Parameter(name = "schema",value = "你要使用的schema名称"), @org.hibernate.annotations.Parameter(name = "initial_value", value = "1"), @org.hibernate.annotations.Parameter(name = "increment_size", value = "1") }) @Column(name = "CPNO") private String plyNumber; }
内容的提问来源于stack exchange,提问作者agarwalsukant
相关产品推荐
相关产品推荐

