我有下面的代码,让Scala使用Hibernate访问SAP Hana表。我需要用MySql实现相同的代码,但问题是MySql不支持序列(它适用于AUTO_INCREMENT列)和代码中断,因为我必须为Hana指定@SequenceGenerator。有没有办法用一个条件来编译这段代码,以排除@SequenceGenerator注释,使其同时适用于MySql和Hana?
@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 = _
}发布于 2018-05-30 22:14:12
可能不是您想要听到的,但是AFAIK没有办法有条件地包含注释。另一种方法是在@MappedSuperclass中包含通用功能,并根据环境在构建时适当地注入具体实例。就像这样:
@MappedSuperclass
abstract class AbstractClientJpa {
var surrogateKey: Int // abstract
var code: String = _
var name: String = _
}..。
@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 = _
}..。
@Entity
@Table(name = "clients")
class MySQLClientJpa extends AbstractClientJpa {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var surrogateKey: Int = _
}https://stackoverflow.com/questions/47995473
复制相似问题