Spring JPA @IdClass для CompositeKey минимальные требования - PullRequest
0 голосов
/ 14 апреля 2020

Привет, я хочу использовать аннотацию @IdClass для CompositeKey, но я немного запутался.

В некоторых статьях для класса CompositeKey говорится, что вы должны переопределить equals, а метод ha sh должен или нет? Мой второй вопрос, я должен поместить getter и setters в myfields в классе ComjectKey или я уже добавил getter и setters в мою основную сущность, которая использует MyCompositeKey в качестве @IdClass. Может кто-нибудь поделиться примерами минимальных требований @ IdClass

public class MyCompositeKey  implements Serializable {


    public MyCompositeKey  (){}

    private String Name; //Is it necessary to add getter setter to fields

    private String UserName; //Is it necessary to add getter setter to fields


 @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
   ....
    }

@Override
public int hashCode() 
return Objects.hash(******);
}

1 Ответ

0 голосов
/ 14 апреля 2020

Обычно Hibernate требует реализации hashCode() и equals() для первичных ключей. (Я не знаю, для других реализаций JPA).

В документации [1] утверждается, что

Вы должны переопределить методы equals() и hashCode(), если вы

  • намеревается поместить экземпляры постоянных классов в набор (рекомендуемый способ представления многозначных ассоциаций), а
  • намеревается использовать присоединение отдельных экземпляров

Итак, ИМХО, это всегда хорошая идея для их реализации, так как вы не знаете, как будете использовать свои сущности в будущем.

По второму вопросу, согласно [2] Вы должны реализовать геттеры, но не сеттеры. Но, ИМХО, почему бы и нет? Если вы используете IDE, например Eclipse, их легко создать одновременно.

[1] https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/4.3/html/hibernate_reference_guide/persistent_classes-implementing_equals_and_hashcode

[2] http://www.thejavageek.com/2014/05/01/jpa-idclass-example/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...