Отказ от ответственности: это НЕ еще один вопрос, спрашивающий, как отключить дублирование кода в Sonarqube!
У меня есть приложение JPA с этим базовым классом сущности:
@MappedSuperclass
public class AbstractBaseEntity {
@Id
@org.hibernate.annotations.Type(type = "uuid-char")
@Column(name = "ID", length = 36, nullable = false, updatable = false, unique = true)
private UUID id;
@Column(name = "CREATOR", length = 32, nullable = false, updatable = false)
private String creator;
@Column(name = "CREATION_DATE", nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
@Column(name = "UPDATER", length = 32)
private String updater;
@Column(name = "UPDATE_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date updateDate;
...
}
Кроме того, у меня есть много сущностей, полученных из этой базовой сущности.
Поскольку существует соглашение о том, что каждое имя таблицы базы данных и имена их столбцов должны начинаться с одного и того же префикса, все наши сущности имеют @AttributeOverrides
аннотации, подобные этим:
@Entity
@Table(name = "CF_MY_ENTITY")
@AttributeOverride(name = "id", column = @Column(name = "CF_ID", length = 36, nullable = false, updatable = false, unique = true))
@AttributeOverride(name = "creator", column = @Column(name = "CF_CREATOR", length = 32, nullable = false, updatable = false))
@AttributeOverride(name = "creationDate", column = @Column(name = "CF_CREATION_DATE", nullable = false, updatable = false))
@AttributeOverride(name = "updater", column = @Column(name = "CF_UPDATER", length = 32))
@AttributeOverride(name = "updateDate", column = @Column(name = "CF_UPDATE_DATE"))
public class MyEntity extends AbstractBaseEntity {
...
}
В этом примере префикс CF_
, все другие объекты имеют разные префиксы.
Sonarqube теперь помечает эти аннотации как дубликаты кодовых блоков, даже если ониразличаются по именам столбцов.
Можно ли как-то реорганизовать код и избавиться от этих дублирующих блоков кода?