рд╣реИрд╢ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрд░рдЪрдирд╛ (рдЬреИрд╕реЗ рд╣реИрд╢рд╕реЗрдЯ) рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп @EqualsAndHashCode
рдПрдиреЛрдЯреЗрд╢рди рдЬреЛ рд▓рдВрдмреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреИрд╕реЗ pk
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
<strong i="9">@Entity</strong>
@EqualsAndHashCode(of = "pk")
class Foo {
<strong i="10">@Id</strong>
private Long pk;
private LocalDate createdAt;
}
<strong i="13">@Entity</strong>
class Foo {
<strong i="14">@Id</strong>
private Long pk;
private LocalDate createdAt;
public int hashCode() {
int PRIME = true;
int result = 1;
Object $pk = this.getPk();
int result = result * 59 + ($pk == null ? 43 : $pk.hashCode());
return result;
}
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
}
рддреЛ рдЬрдм рдкреАрдХреЗ = рд╢реВрдиреНрдп рдФрд░ рдкреАрдХреЗ = 43 рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг, рдпрд╣ рд╡рд╣реА рд╣реИрд╢ рдХреЛрдб рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╣реИрд╢ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╕рдорд╛рди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред
рдФрд░ toString
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ OmniFaces ListConverter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрдЬрд╛рдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд╣реИрд╢рдХреЛрдб рд▓реМрдЯрд╛рдПрдВ
рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓реЗ рдЪреБрдХреЗ рд╣реИрдВ, рдпрд╛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ ?!
рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА
рддреЛ рдЬрдм рдкреАрдХреЗ = рд╢реВрдиреНрдп рдФрд░ рдЕрдиреНрдп рдкреАрдХреЗ = 43 рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг, рдпрд╣ рд╡рд╣реА рд╣реИрд╢ рдХреЛрдб рд▓реМрдЯрд╛рдПрдЧрд╛
рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрд╢рд╛ рд╣реИрд╢ рдЯрдХрд░рд╛рд╡ рд╣реЛрдЧрд╛, рдЪрд╛рд╣реЗ рдЖрдк рдХреБрдЫ рднреА рдЪреБрдиреЗрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Arrays.hashCode
, String.hashCode
рдФрд░ рдХрдИ рдЕрдиреНрдп рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯрдХрд░рд╛рд╡ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрдЬрд╛рдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд╣реИрд╢рдХреЛрдб рд▓реМрдЯрд╛рдПрдВ
рдореЗрд░реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ, рдореИрдВ рдЬреЛрд░ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ id
рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЬреАрдм рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИрдВред
рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреАрдХреЗ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдкрд░ рдХрд┐рд╕ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 43 рдХреЗ рд▓рд┐рдПред
рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рджреЗрдЧрд╛ред
@EqualsAndHashCode(of = "pk", ifAnyNull = -1)
рддреЛ рдпрд╣ -1 рдХреЗ рдмрдЬрд╛рдп 43 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╢реВрдиреНрдп рдерд╛
43 рд╢рд╛рдпрдж рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ -1, 0 рдФрд░ 1 рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдХрдо рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рд░рдЦрд░рдЦрд╛рд╡ рднрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рди рд╣реИрд╢рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд░рд╛рдмрд░ рдЕрдиреБрдмрдВрдз рддреЛрдбрд╝ рджреЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
43 рд╢рд╛рдпрдж рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ -1, 0 рдФрд░ 1 рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдХрдо рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рд░рдЦрд░рдЦрд╛рд╡ рднрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рди рд╣реИрд╢рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд░рд╛рдмрд░ рдЕрдиреБрдмрдВрдз рддреЛрдбрд╝ рджреЗрдЧрд╛ред