Объект JPA для таблицы без первичного ключа

У меня есть таблица MySQL без первичного ключа, и я должен отобразить его в объект JPA. Я не могу изменить таблицу всегда.

Поскольку объекты должны иметь первичный ключ, я должен указать тот. Если я уверен, что поле, которое я использую в качестве первичного ключа в объекте (или поля, я должен выбрать использование составного первичного ключа) всегда будет уникальным (и не пустым) в таблице, может то, что таблице не указали первичный ключ в причине CREATE TABLE никакие проблемы?

10
задан tputkonen 5 July 2010 в 11:30
поделиться

2 ответа

Верно. JPA не имеет возможности узнать, являются ли столбцы, которые он использует в качестве ПК, на самом деле настоящим ПК в базе данных. Если эти столбцы на практике являются ПК, тогда все должно быть в порядке.

Вы можете потенциально получить некоторые проблемы с производительностью, если столбцы псевдо-PK неправильно проиндексированы, однако - JPA будет выполнять запросы к PK, предполагая, что он будет работать хорошо.

8
ответ дан 4 December 2019 в 01:29
поделиться

JPA сама по себе не анализирует вашу базу данных. Просто не используйте общие методы, использующие первичный ключ (find / merge / ...), вместо этого используйте именованные запросы, например, используя синтаксис обновления jpql.

@Entity
@Table(name = "login")
@NamedQueries({
        @NamedQuery(name = "Login.updateLastOnline", 
        query = "UPDATE Login l SET l.lastOnline = :newDate WHERE l.loginId = :loginId")
        })
public class Login implements Serializable
{

Не имеет значения, является ли loginId первичным ключом

2
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: