此时我们在项目中有几个Hibernate对象类,如下所示:
package org.carl.recordkeeper.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;
public class BstRecordPK implements Serializable
{
// ------------------------------ FIELDS ------------------------------
private String bst;
private Integer instbit;
// --------------------- GETTER / SETTER METHODS ---------------------
@Id
@Column( name = "BST", nullable = false, length = 1 )
public String getBst()
{
return bst;
}
public void setBst( String bst )
{
this.bst = bst;
}
@Id
@Column( name = "INSTBIT", nullable = false )
public Integer getInstbit()
{
return instbit;
}
public void setInstbit( Integer instbit )
{
this.instbit = instbit;
}
// ------------------------ CANONICAL METHODS ------------------------
@Override
public boolean equals( Object o )
{
if ( this == o )
{
return true;
}
if ( o == null || getClass() != o.getClass() )
{
return false;
}
BstRecordPK that = (BstRecordPK)o;
if ( bst != null ? !bst.equals( that.bst ) : that.bst != null )
{
return false;
}
if ( instbit != null ? !instbit.equals( that.instbit ) : that.instbit != null )
{
return false;
}
return true;
}
@Override
public int hashCode()
{
int result = instbit != null ? instbit.hashCode() : 0;
result = 31 * result + ( bst != null ? bst.hashCode() : 0 );
return result;
}
}
我们还有一个重复的代码检查器,当我们创建一个新的Hibernate类时它会继续运行,因为其中一个get / set对匹配另一个类(具有外键的数据库表)中的内容。有没有办法减少重复的代码,仍然保持Hibernate快乐?我已经考虑过使用基类,但是并不是说在所有数据库表中都使用了一个列。
答案 0 :(得分:1)
代码重复警告,用于显示通常使用copy& amp;糊。复制代码会降低可维护性并可能导致安全问题。
如果sonarqube向我显示重复警告,我会仔细查看fode的部分并决定,如果这是误报,即使retrn类型不同,许多pojos会共享一些代码,例如getId() { return id; }
或者我有些程序员刚刚重新实现或复制了一个部分。
我强烈建议不要减少你的实体。这只会导致诽谤。
但是,如果您真的对代码出版检测限制感到烦恼,可以尝试使用@MappedSuperClass
。