@Override
    protected Map get(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner) throws SQLException {
        return (Map) rs.getObject(names[0]);
    }
@Test
    public void test() {

        doInJPA(entityManager -> {
            Book book = new Book();
            book.setIsbn("978-9730228236");
            book.getProperties().put("title", "High-Performance Java Persistence");
            book.getProperties().put("author", "Vlad Mihalcea");
            book.getProperties().put("publisher", "Amazon");
            book.getProperties().put("price", "$44.95");
            
            entityManager.persist(book);
        });

        doInJPA(entityManager -> {
            Book book = entityManager.unwrap(Session.class)
                .bySimpleNaturalId(Book.class)
                .load("978-9730228236");

            assertEquals("High-Performance Java Persistence", book.getProperties().get("title"));
            assertEquals("Vlad Mihalcea", book.getProperties().get("author"));
        });
    }