Использование поля MongoDB _id в качестве первичного ключа в DataNucleus

Я новичок в MongoDB и JDO после того, как в прошлом в основном занимался разработкой с Hibernate. Я пытаюсь сохранить простой объект и использовать сгенерированный «_id» из MongoDB в качестве первичного ключа для сохраняемого объекта. К сожалению, похоже, что DataNucleus генерирует поле «IDENTITY», а Mongo генерирует поле «_id» в сохраняемом документе. Таким образом, каждый объект сохраняется с двумя уникальными идентификаторами. Как я могу заставить DataNucleus просто использовать сгенерированный Mongo ObjectId? Мой постоянный класс ниже.

@PersistentCapable(identityType=IdentityType.DATASTORE)
public class HistoricalPrice {

private String ticker;
private Date day;
private double open;
private double close;
private double high;
private double low;
private long volume;

public HistoricalPrice(String ticker, Date day, double open, double close, double high, double low, long volume) {
    super();
    this.ticker = ticker;
    this.day = day;
    this.open = open;
    this.close = close;
    this.high = high;
    this.low = low;
    this.volume = volume;
}

person Chris    schedule 27.10.2011    source источник


Ответы (1)


Определите "стратегию" идентификации хранилища данных как IDENTITY (в отличие от значения по умолчанию NATIVE).

@DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY)

т.е. в соответствии с тем, что потребовалось бы в СУБД для использования какого-либо встроенного механизма.

person DataNucleus    schedule 28.10.2011