JPA отношение к возможно несуществующему объекту - PullRequest
1 голос
/ 17 февраля 2012

Для справки, я использую Play! Framework.

У меня есть объект JPA, который представляет данные, собранные датчиками на устройстве. Вот соответствующие части объявления класса:

@Entity
public class Data extends Model
{
    @ManyToOne
    Device dataCollector;

    @ManyToOne
    User user;
}

Проблема в том, что мне нужно иметь возможность собирать данные с устройств независимо от их регистрации в локальной базе данных, поэтому могут быть устройства с идентификатором, но идентификатор не имеет отношения к локальной базе данных.

Способ, которым JPA создает таблицу Data, столбец для dataCollector - это просто Device ID. Но когда вы пытаетесь получить запись, которая имеет идентификатор для недопустимого Device, он выдает исключение, потому что не может создать экземпляр объекта Device.

Вероятно, я мог бы решить эту проблему, просто сохранив идентификатор Device в Data объектах, но мне очень нравится чистота JPA, создающего объект для вас. Есть ли способ заставить JPA дать мне некоторое значение по умолчанию Device, если в объекте Data нет записи для идентификатора?

1 Ответ

0 голосов
/ 18 февраля 2012

Ну ... я думаю, что если вы хотите получить Устройство, которого нет в вашей базе данных, я думаю, что вы просто не можете достичь того, чего хотите.

Вы можете создать экземпляр объекта, но если вы попытаетесьотправить запросы в базу данных не удастся.Итак, если вы хотите поведение, которое вы должны сохранить устройство, тогда ищите Data по Device как:

List<Data> dataGathered = Data.find("dataCollector = ?", theDataCollector).fetch();

Это то, что я понял о сообщениях ...ты понял?или я не получил то, что вы пытаетесь?

...