Giter VIP home page Giter VIP logo

Comments (2)

ml054 avatar ml054 commented on August 23, 2024

Hi,

You have 2 options here:

  1. Use IMetadataDictionary metadataFor = session.advanced().getMetadataFor(map);
    @Test
    public void mapAsEntity() {
        try (IDocumentStore store = new DocumentStore("http://live-test.ravendb.net", "Java")) {

            store.getConventions().registerIdConvention(Map.class, (String dbName, Map entity) -> {
                // concat with '/' to automatically generate document id postfix
                return (String) entity.get("collection") + "/";
            });

            store.initialize();

            try (IDocumentSession session = store.openSession()) {
                Map<String, Object> map = new HashMap<>();
                map.put("collection", "Person");
                map.put("age", 23);
                map.put("name", "Ada Lovelace");
                map.put("subdocument", Collections.singletonMap("doc", "map"));

                session.store(map);
                IMetadataDictionary metadataFor = session.advanced().getMetadataFor(map);

                metadataFor.put(Constants.Documents.Metadata.COLLECTION, "Person");
                metadataFor.put(Constants.Documents.Metadata.RAVEN_JAVA_TYPE, "YouCanOverrideJavaTypeHere");

                session.saveChanges();
            }
        }
    }
  1. Or register store.addBeforeStoreListener:
    @Test
    public void mapAsEntityOnBeforeStore() throws Exception {
        try (IDocumentStore store = new DocumentStore("http://live-test.ravendb.net", "Java")) {

            store.getConventions().registerIdConvention(Map.class, (String dbName, Map entity) -> {
                // concat with '/' to automatically generate document id postfix
                return entity.get("collection") + "/";
            });

            store.addBeforeStoreListener((sender, event) -> {
                IMetadataDictionary documentMetadata = event.getDocumentMetadata();
                documentMetadata.put(Constants.Documents.Metadata.COLLECTION, "People");
            });

            store.initialize();

            try (IDocumentSession session = store.openSession()) {
                Map<String, Object> map = new HashMap<>();
                map.put("collection", "Person");
                map.put("age", 23);
                map.put("name", "Ada Lovelace");
                map.put("subdocument", Collections.singletonMap("doc", "map"));

                session.store(map);
                session.saveChanges();
            }
        }
    }

from ravendb-jvm-client.

ayende avatar ayende commented on August 23, 2024

from ravendb-jvm-client.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.