首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有条件地包含Hibernate注释?

如何有条件地包含Hibernate注释?
EN

Stack Overflow用户
提问于 2017-12-28 00:26:54
回答 4查看 1.4K关注 0票数 13

我有下面的代码,让Scala使用Hibernate访问SAP Hana表。我需要用MySql实现相同的代码,但问题是MySql不支持序列(它适用于AUTO_INCREMENT列)和代码中断,因为我必须为Hana指定@SequenceGenerator。有没有办法用一个条件来编译这段代码,以排除@SequenceGenerator注释,使其同时适用于MySql和Hana?

代码语言:javascript
复制
@Entity
@Table(name = "clients")
class ClientJpa {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
    @SequenceGenerator(name="generator", sequenceName = "cliSeq", allocationSize = 1)    
    var surrogateKey: Int = _
    var code: String = _
    var name: String = _
}
EN

Stack Overflow用户

发布于 2018-05-30 22:14:12

可能不是您想要听到的,但是AFAIK没有办法有条件地包含注释。另一种方法是在@MappedSuperclass中包含通用功能,并根据环境在构建时适当地注入具体实例。就像这样:

代码语言:javascript
复制
@MappedSuperclass
abstract class AbstractClientJpa {
    var surrogateKey: Int   // abstract
    var code: String = _
    var name: String = _
}

..。

代码语言:javascript
复制
@Entity
@Table(name = "clients")
class HanaClientJpa extends AbstractClientJpa {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
    @SequenceGenerator(name="generator", sequenceName = "cliSeq", allocationSize = 1)    
    var surrogateKey: Int = _
}

..。

代码语言:javascript
复制
@Entity
@Table(name = "clients")
class MySQLClientJpa extends AbstractClientJpa {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var surrogateKey: Int = _
}
票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47995473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档