Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datastore.ensureIndexes() breaks morphia #921

Closed
cmoetzing opened this issue Apr 14, 2016 · 2 comments
Closed

Datastore.ensureIndexes() breaks morphia #921

cmoetzing opened this issue Apr 14, 2016 · 2 comments
Labels
Milestone

Comments

@cmoetzing
Copy link

Description

When I call Datastore.ensureIndexes() morphia breaks and subsequent queries fail with
java.lang.IllegalArgumentException: BasicBSONList can only work with numeric keys, not: [elementData]
The query works before calling Datastore.ensureIndexes() (see example).

Workaround

I create separate Morphia and Datastore instances to call ensureIndexes(). These instances are then deleted and new ones created for application queries.

Versions

  • org.mongodb.morphia:morphia:1.1.1
  • org.mongodb:mongo-java-driver:3.2.2
  • MongoDB 3.2.4
  • Java 8 (build 1.8.0_66-b18)

Stacktrace

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: BasicBSONList can only work with numeric keys, not: [elementData] at org.mongodb.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:74) at org.mongodb.morphia.mapping.Mapper.readMappedField(Mapper.java:772) at org.mongodb.morphia.mapping.Mapper.fromDb(Mapper.java:230) at org.mongodb.morphia.mapping.Mapper.fromDBObject(Mapper.java:191) at org.mongodb.morphia.query.MorphiaIterator.convertItem(MorphiaIterator.java:134) at org.mongodb.morphia.query.MorphiaIterator.processItem(MorphiaIterator.java:146) at org.mongodb.morphia.query.MorphiaIterator.next(MorphiaIterator.java:117) at org.mongodb.morphia.query.QueryImpl.asList(QueryImpl.java:150) at it.test.Main.run(Main.java:44) at it.test.Main.main(Main.java:24) Caused by: java.lang.IllegalArgumentException: BasicBSONList can only work with numeric keys, not: [elementData] at org.bson.types.BasicBSONList._getInt(BasicBSONList.java:168) at org.bson.types.BasicBSONList._getInt(BasicBSONList.java:160) at org.bson.types.BasicBSONList.get(BasicBSONList.java:105) at org.mongodb.morphia.mapping.MappedField.getDbObjectValue(MappedField.java:190) at org.mongodb.morphia.converters.Converters.fromDBObject(Converters.java:121) at org.mongodb.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:20) at org.mongodb.morphia.mapping.Mapper.readMappedField(Mapper.java:766) at org.mongodb.morphia.mapping.Mapper.fromDb(Mapper.java:230) at org.mongodb.morphia.mapping.EmbeddedMapper.readMapOrCollectionOrEntity(EmbeddedMapper.java:206) at org.mongodb.morphia.mapping.EmbeddedMapper.readCollection(EmbeddedMapper.java:142) at org.mongodb.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:45) ... 9 more

Example

See it.test.Main#run() for data setup. Then run it.test.Main#main()
morphia-index-bug.zip

@ghost
Copy link

ghost commented May 25, 2016

Have the same problem. After removing datastore.ensureIndexes(); from code it works.

@evanchooly evanchooly added this to the 2.0 milestone May 31, 2016
@evanchooly
Copy link
Member

See comment on #923

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants