Morphia引用类的索引违规

时间:2012-07-06 10:00:45

标签: java mongodb java-ee-6 morphia

我试图坚持一个(所有者)与morphia(0.99)/ mongoDB(2)的许多(Car)关系。当我尝试通过引用类所有者来持久化类Car时,Morphia会抛出MongoException $ DuplicateKey异常。这很奇怪,因为我认为在morphia中不存在级联持续存在。

为什么当我持有Car时,morphia会在引用的类所有者上抛出index * index_username *的重复键异常?

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

豆:

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

例外:

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

1 个答案:

答案 0 :(得分:1)

您无法添加多个null参考。为索引添加所有实体的值(最多1个可以是null)或设置sparse=true,这样您就可以拥有唯一值,但允许多个null