J'essaie de persister une relation (propriétaire) à plusieurs (voiture) avec la morphine (0,99)/mongoDB (2). Lorsque j'essaie de conserver la classe Car avec une référence au propriétaire de la classe, Morphia lance une exception $ DuplicateKey MongoException. C'est étrange puisque je pensais que la cascade persistante n'existait pas dans la morphine. Pourquoi la morphine lève-t-elle une exception de clé dupliquée pour index * index_username * sur la classe référencée Owner lorsque je persiste Car?Violation d'index sur une classe référencée, Morphia
Pojo:
@Entity(noClassnameStored=true, value="base")
public class Base {
@Id
private ObjectId id;
...
@Entity(value = "owner", noClassnameStored = true)
@Polymorphic
public class Owner extends Base {
@Indexed(value = IndexDirection.ASC, unique=true, dropDups=true, name="index_username")
private String userName;
@Reference
private Set<Car> cars = new HashSet<Car>();
...
@Entity(value="car", noClassnameStored=true)
@Polymorphic
public class Car extends Base{
@Reference
private Owner owner
Bean:
car.setOwner(owner);
BeanUtil.getDataStore().save(car);
Exception:
com.mongodb.MongoException$DuplicateKey: E11000 duplicate key error index: myapp.car.$index_username dup key: { : null }
Je dois dire que persistant le premier objet de voiture avec référence au propriétaire fonctionne bien . – Chris