问题描述
我想使用@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 (将#修改为@)