基于环境的条件注释

jty*_*ler 9 java annotations

是否可以有条件地应用Java注释?例如,假设我有一个带有注释序列的hibernate映射:

@Id
@Column(name = "TABLE_ID")
@GeneratedValue(strategy = SEQUENCE, generator = "generator")
@SequenceGenerator(name = "generator", sequenceName = "TABLE_SEQ")
public Long getId() {
    return this.Id;
}
Run Code Online (Sandbox Code Playgroud)

是否可以执行以下操作,例如,根据环境变量删除注释?

@Id
@Column(name = "TABLE_ID")
if(env.equals('dev')){
  @GeneratedValue(strategy = SEQUENCE, generator = "generator")
  @SequenceGenerator(name = "generator", sequenceName = "TABLE_SEQ")}
public Long getId() {
    return this.Id;
}
Run Code Online (Sandbox Code Playgroud)

注意:我确实理解在这种情况下可以将*.hbm.xml文件用于不同的环境,但是我想使用注释,因为要维护的文件较少.

小智 6

(按照要求)

简短的回答,不,不是.中等答案,你可以使用注释处理器来完成这项工作,但是你必须维护一个注释处理器.