首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何减少Hibernate类中重复的代码?

如何减少Hibernate类中重复的代码?
EN

Stack Overflow用户
提问于 2014-11-13 17:08:15
回答 1查看 148关注 0票数 0

此时,我们的项目中有几个Hibernate对象类,如下所示:

代码语言:javascript
运行
复制
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的快乐呢?我考虑过使用一个基类,但并不是所有的数据库表中都有一个列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-13 17:25:33

代码复制警告:用于显示复制的代码段,通常使用复制和粘贴方式生成。复制代码将降低可维护性,并可能导致安全问题。

如果sonarqube向我显示重复警告,我将仔细查看fode的部分,并确定这是否为假阳性,因为许多pojos将共享一些代码,比如getId() { return id; },即使retrn类型不同,或者我的程序员只是重新实现或复制了一个部分。

我强烈建议不要减少你们这些实体。这只会导致争论。

但是,如果您真的为代码二义性检测限制而烦恼,您可以尝试使用@MappedSuperClass

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26914438

复制
相关文章

相似问题

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