Я хочу иметь версии из той же записи данных. Другими словами, я хочу продублировать запись с другим номером версии.
id - Version
будет первичным ключом.
Как должна выглядеть сущность? Как его дублировать с другой версией?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
@IdClass
аннотации я обнаружил еще один совет:@Column
аннотация должна входить в поля класса Entity (YourEntity
в примере кода RohitJan).Ответы:
Вы можете создать
Embedded class
, который содержит ваши два ключа, а затем иметь ссылку на этот класс, какEmbeddedId
в вашемEntity
.Вы должны бы
@EmbeddedId
и@Embeddable
аннотации.Еще один способ для достижения этой задачи является использование
@IdClass
аннотаций и место как вашid
в этомIdClass
. Теперь вы можете использовать обычную@Id
аннотацию для обоих атрибутов.источник
@Generatedvalue
для идентификаторов EmbeddedId@GeneratedValue
может использоваться только для генерации ключевых значений для первичного ключа, он не может генерировать комбинацию для составных ключей.Класс MyKey должен быть реализован,
Serializable
если вы используете@IdClass
источник
Ключевой класс:
Класс сущности:
Как я могу продублировать его с другой версией?
Вы можете отсоединить объект, полученный от поставщика, изменить ключ Entry и затем сохранить его как новый объект.
источник
AUTOGENERATED
. или что-то в этом роде@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
иprime
в методеhashCode
в классеEntryKey
, вы можете сказать мне , где эта идея исходит от?Класс MyKey (@Embeddable) не должен иметь отношений вроде @ManyToOne
источник