Для справки, я использую 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
нет записи для идентификатора?