我想知道是否有一种更合适的方法来解决使用字符串值生成自动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;
}
}
答案 0 :(得分:0)
我只能说"不要这样做"。像"str10001"
这样的字符串ID如何优于10001
?它不是一个优化,因为字符串需要更多的内存和更多的时间。所以我想你以后需要将它传递给一些String-expecting方法。
如果是,请改为通过"str" + id
。在运行中构建字符串肯定不会让您的服务器饱和。
如果没有,请告诉我们您实际需要,而不是思考它可以帮助您实现它。
我很确定,Hibernate无法做到。很久以前我不能检查它并且它没有任何意义(无论如何,它不是人群会要求的功能)。