为什么不使用 @IdClass 调用 equals()

问题描述

我想使用@IdClass 注释来制作 Long 和 Date 值的复合 PK。调试时我注意到没有调用 equals() 方法,我的断点从未命中。

这是代码片段:

实体类

@Entity

@Table(name = "view_ins_test",schema = "dbo")

@IdClass(value = InsPK.class)

public class InsTest {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = "ins_id",nullable = false)

private Long id;



@Id

@Temporal(TemporalType.DATE)

@Column(name = "ins_data")

private Date data;



// + getters/setters

}

复合PK类:

public class InsPK implements Serializable {



private Long id;

private Date data;



public InsPK() {

}



public InsPK(Long id,Date data) {

this.id = id;

this.data = data;

}



@Override

public int hashCode() {

int hash = 7;

hash = 89 * hash + Objects.hashCode(this.id);

hash = 89 * hash + Objects.hashCode(this.data);

return hash;

}



@Override

public boolean equals(Object obj) {

if (this == obj) return true;

if (!(obj instanceof InsPK)) return false;

InsPK other = (InsPK) obj;

return Objects.equals(this.id,other.id) && Objects.equals(this.data,other.data);

}



// + getters/setters

}

我尝试了几种变体,但没有成功。在这种情况下可能会出现什么问题,解决问题的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...