1

我正在尝试与 morphia(0.99)/mongoDB(2) 保持一对(所有者)对多(汽车)的关系。当我尝试使用对类 Owner 的引用来持久化 Car 类时,Morphia 会引发 MongoException$DuplicateKey 异常。这很奇怪,因为我认为 morphia 中不存在级联持续存在。

当我坚持 Car 时,为什么 morphia 会在引用的类 Owner 上为索引 *index_username* 抛出重复键异常?

波乔:

@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

豆:

car.setOwner(owner);
BeanUtil.getDataStore().save(car);

例外:

com.mongodb.MongoException$DuplicateKey: E11000 duplicate key error index: myapp.car.$index_username  dup key: { : null }
4

1 回答 1

1

您不能添加多个null参考。为所有实体添加一个值(最多 1 个null)或sparse=true在索引上设置,以便您可以拥有唯一值,但允许多个null

于 2012-07-06T15:09:45.613 回答