2012-02-17 2 views
1

Для справки, я использую Play! Фреймворк.Отношение JPA к возможно несуществующему объекту

У меня есть объект 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, если нет записи для ID в объекте Data?

ответ

0

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

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

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

Вот что я понял про посты ...

ли вы его? или я не получил то, что вы попробовали?

Смежные вопросы