java - 一种从 Java 对象实例生成代码的方法

标签 java object hashcode identify

我知道HashCode是一种方法,但我注意到HashCode在一段时间后发生了变化。所以,我有一个允许购买东西的应用程序,每篇文章都由现在从哈希码生成并存储在数据库 PostgreSQL 中的代码来标识,但我发现了这个问题,所以我无法使用它。事实上,第二天我尝试在数据库上识别这篇文章时,哈希码发生了变化,所以它不起作用。什么是解决方案?多谢! 我为文章生成代码的对象是这样的

public class AcquistoDVDRichiesto implements IsSerializable, CustomEnum {
    private int codice_carrello;
    private String utente;
    private int numero;
    private String film;
    private int fornitura;

    public AcquistoDVDRichiesto(){}
    public AcquistoDVDRichiesto(int c, String user){
        utente=user;
        codice_carrello=c;
    }

    public void generateCodeBasket(){
        if(film!=null && numero!=0 && fornitura!=0){
            codice_carrello=Math.abs(film.hashCode()+((Integer)numero).hashCode()+
                    ((Integer)fornitura).hashCode()+tipo_supporto.DVD.hashCode());
        }
    }
}

-

最佳答案

您不应该手动生成数据库主键。最好的方法是让数据库为每条记录生成唯一的主键。这样您就可以确保不会发生主键冲突,并且代码不会更改。

在 PostreSQL 中,您可以使用 SERIAL 列类型来实现此目的。示例:

CREATE TABLE tablename (
   colname SERIAL
);

另一种方法是使用序列,但稍微复杂一些。

关于java - 一种从 Java 对象实例生成代码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32721187/

相关文章:

java - hashCode() 没有 equals()?

Java Spring Hibernate 通信链路故障

java - 我们可以重新分发 Oracle tools.jar 吗?

python - 如何在 python 中访问给定变量的名称?

c++ - "Thing thing;"和 "Thing thing = Thing();"之间有什么区别,我什么时候应该使用其中一个?

java - 为什么当我覆盖 hashcode 并从 hashmap 获取值时需要覆盖 equals

java - 将屏幕和网络摄像头录制到视频文件

java - 避免在 Jackson 中运行时序列化某些字段

javascript - 从条目创建嵌套对象

c# - 相同的GetHashCode()用于不同的对象