自动增量与hibernate中的String值一样

时间:2014-05-19 02:23:07

标签: java hibernate

我想知道是否有一种更合适的方法来解决使用字符串值生成自动ID,我的第一个想法是创建一个自动增量ID,我们可以调用auto_id然后在保存新实体之前我将查询数据库中的最新数据获取id然后我将1添加到我的自动生成值列,我指定的名称是stringValue +(id + 1)虽然我担心它会如何影响保存此实体的性能需要在db中进行两次访问才能获取和保存...就像我之前的问题是否有一种更合适的方法来处理这种情况?

也很抱歉我的英国人如果你想用我的问题澄清一下,请提前询问,thnx ..

这是我用于hibernate注释的AttributeModel的代码

@Component
@Entity
@Table(name="attribute_info")
public class AttributeModel {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="attr_id", nullable=false, unique=true)
    private int id;

    @Column(name="attr_name")
    private String name;

    @Column(name="attr_desc")
    private String desc;

    @Column(name="attr_active")
    private int active;

    @Column(name="attr_abbr")
    private String abbr;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name="stats_id", referencedColumnName="stats_id")
    private BaseStatisticModel baseStats;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public int getActive() {
        return active;
    }

    public void setActive(int active) {
        this.active = active;
    }

    public String getAbbr() {
        return abbr;
    }

    public void setAbbr(String abbr) {
        this.abbr = abbr;
    }

    public BaseStatisticModel getBaseStats() {
        return baseStats;
    }

    public void setBaseStats(BaseStatisticModel baseStats) {
        this.baseStats = baseStats;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }   

}

1 个答案:

答案 0 :(得分:0)

我只能说"不要这样做"。像"str10001"这样的字符串ID如何优于10001?它不是一个优化,因为字符串需要更多的内存和更多的时间。所以我想你以后需要将它传递给一些String-expecting方法。

如果是,请改为通过"str" + id。在运行中构建字符串肯定不会让您的服务器饱和。

如果没有,请告诉我们您实际需要,而不是思考它可以帮助您实现它。

我很确定,Hibernate无法做到。很久以前我不能检查它并且它没有任何意义(无论如何,它不是人群会要求的功能)。