1

J'essaie de créer un schéma dynamiquement en utilisant hibernate/Java/GWT, je crée cfg.xml et hbm.xml fichiers dynamiquement et de le stocker dans la base de données comme blob.Comment ajouter une ressource de mappage à la configuration d'hibernation par programmation pour la création d'une fabrique de sessions?

Donc je veux construire sessionfactory pour le schéma. Pour la même chose je crée configuration objet utilisant le fichier cfg.xml, mais comme mes fichiers hbm.xml sont dans une autre table, ils ne sont pas des fichiers sur le système de fichiers, alors comment puis-je l'ajouter à l'objet de configuration en tant que ressource. Je ne veux pas créer de fichiers pour eux sur le système de fichiers.

J'ai essayé addInputStream(), addFile() méthodes, mais ils jettent MappingNotFoundException.

Comme méthode régulière, je sais comment créer sessionfactory comme en ajoutant la balise <mapping resource="abc.hbm.xml"> dans le fichier cfg.xml et ainsi de suite. Mais comment puis-je les ajouter à la configuration parce que je n'ai pas de fichiers hbm.xml?

mon fichier cfg.xml stocké dans le tableau:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.password">passwd</property> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testSchema</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> 
     <property name="javax.persistence.validation.mode">none</property> 
     <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property> 
     <property name="hibernate.default_entity_mode">dynamic-map</property> 
    </session-factory> 
</hibernate-configuration> 

mon fichier hbm.xml stocké dans le tableau:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<hibernate-mapping> 
    <class entity-name="testTable1"> 
    <id column="id" name="id" type="Long"> 
     <generator class="identity"/> 
    </id> 
    <property column="id" length="20" name="id" type="Long"/> 
    <property column="booleanColumn" length="1" name="booleanColumn" type="Byte"/> 
    <property column="doubleColumn" length="20" name="doubleColumn" type="Long"/> 
    <property column="dateColumn" name="dateColumn" type="Double"/> 
    </class> 
</hibernate-mapping> 
+0

Veuillez poster votre fichier cfg.xml ici. –

+0

@Ruchi: voir ma question éditée. –

+0

Avez-vous utilisé Spring pour votre projet? –

Répondre

0

Vous avez la réponse, je dois créer un document à l'aide les octets de fichier lus à partir de la base de données, puis ajoutez-les à l'objet de configuration ---

créer le document,

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(bytesOfFile); 

puis,

hibernateConfiguration.addDocument(doc); 

Cela a fonctionné pour moi. merci.

Questions connexes