1

morphia(0.99)/mongoDB(2) との 1 (所有者) 対多 (車) の関係を維持しようとしています。クラス Owner への参照を使用してクラス Car を永続化しようとすると、Morphia が MongoException$DuplicateKey 例外をスローします。カスケード持続はモーフィアには存在しないと思っていたので、これは奇妙です。

Car を永続化すると、参照されたクラス Owner のインデックス *index_username* に対して morphia が重複キー例外をスローするのはなぜですか?

ポジョ:

@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 に答える