Reputation: 9404
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
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