ColumnImpl implements Column { @Override public int hashCode() { int hash = 3; hash = 53 * hash + (this.id != null ? this.id.hashCode() : 0); hash = 53 * hash + (this.typeClass != null ? this.typeClass.hashCode() : 0); return hash; } ColumnImpl(TableImpl table, String id, Class typeClass, String title, Object defaultValue, Origin origin, boolean indexed, boolean readOnly);  ColumnImpl(String id, Class typeClass, String title, Object defaultValue, Origin origin, boolean indexed, boolean readOnly); @Override String getId(); @Override int getIndex(); @Override Class getTypeClass(); @Override String getTitle(); @Override Object getDefaultValue(); @Override Origin getOrigin(); @Override Table getTable(); @Override boolean isIndexed(); @Override boolean isArray(); @Override boolean isDynamic(); @Override boolean isReadOnly(); @Override boolean isNumber(); @Override boolean isProperty(); int getStoreId(); void setStoreId(int storeId); @Override String toString(); @Override Estimator getEstimator(); @Override void setEstimator(Estimator estimator); @Override ColumnObserverImpl createColumnObserver(boolean withDiff); @Override boolean equals(Object obj); @Override int hashCode(); int deepHashCode(); boolean deepEquals(ColumnImpl col);  }
@Test public void testColumnHashcode() { ColumnImpl col1 = new ColumnImpl("0", String.class, null, null, Origin.DATA, false, false); ColumnImpl col2 = new ColumnImpl("0", String.class, null, null, Origin.DATA, false, false); ColumnImpl col3 = new ColumnImpl("0", Integer.class, null, null, Origin.DATA, false, false); ColumnImpl col4 = new ColumnImpl("1", String.class, null, null, Origin.DATA, false, false); Assert.assertEquals(col1.hashCode(), col2.hashCode()); Assert.assertNotEquals(col1.hashCode(), col3.hashCode()); Assert.assertNotEquals(col1.hashCode(), col4.hashCode()); }