private void createTable(EntityMeta entityMeta, String tableName) { CQLTableBuilder builder = CQLTableBuilder.createTable(tableName); for (PropertyMeta pm : entityMeta.getAllMetasExceptIdMeta()) { String propertyName = pm.getPropertyName(); Class<?> keyClass = pm.getKeyClass(); Class<?> valueClass = pm.getValueClass(); switch (pm.type()) { case SIMPLE: case LAZY_SIMPLE: builder.addColumn(propertyName, valueClass); break; case LIST: case LAZY_LIST: builder.addList(propertyName, valueClass); break; case SET: case LAZY_SET: builder.addSet(propertyName, valueClass); break; case MAP: case LAZY_MAP: builder.addMap(propertyName, keyClass, pm.getValueClass()); break; case JOIN_SIMPLE: builder.addColumn(propertyName, pm.joinIdMeta().getValueClass()); break; case JOIN_LIST: builder.addList(propertyName, pm.joinIdMeta().getValueClass()); break; case JOIN_SET: builder.addSet(propertyName, pm.joinIdMeta().getValueClass()); break; case JOIN_MAP: builder.addMap(propertyName, keyClass, pm.joinIdMeta().getValueClass()); break; default: break; } } buildPrimaryKeys(entityMeta.getIdMeta(), builder); builder.addComment("Create table for entity '" + entityMeta.getClassName() + "'"); session.execute(builder.generateDDLScript()); }