Sameek Mishra
Sameek Mishra

Reputation: 9404

how to create mapping file dynamically in hibernate?

I have situation where table is created dynamically,i don't know the table name it comes dynamically so i want to know that how can i am able to create mapping file(.cfg.xml) dynamically,it is possible or not?

Thanks

Upvotes: 0

Views: 1509

Answers (1)

FoxyBOA
FoxyBOA

Reputation: 5846

Yes, it's possible.

I do something like that:

    String xml = generate(data, dialect);

    Configuration configuration = new Configuration();
    configuration.addXML(xml);


public static String generate(Data pData, Dialect pDialect) {
    StringBuilder sb = new StringBuilder();
    sb.append("<?xml version='1.0' encoding='UTF-8'?>");
    sb.append("<!DOCTYPE hibernate-mapping PUBLIC '-//Hibernate/Hibernate Mapping DTD//EN' "
                    + "'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>");
    sb.append("<hibernate-mapping>");
    sb.append(String.format("<class name='dummy' table='%s'>", pData.getTable()));

    final IMyColumn primaryKeyColumn = pData.getPrimaryKey().get(0);
    sb.append(addItem(pData, primaryKeyColumn, "id", pDialect));

    for (IMyColumn column : pData.getColumns()) {
        if (!column.equals(primaryKeyColumn)) {
            sb.append(addItem(column, PROPERTY, pDialect));
        }
    }
    sb.append("</class>");
    sb.append("</hibernate-mapping>");
    final String xml = sb.toString();
    //System.out.println(xml);
    return xml;
}

Upvotes: 2

Related Questions