gpt4 book ai didi

java - 如何以编程方式将映射资源添加到 hibernate 配置以创建 session 工厂?

转载 作者:行者123 更新时间:2023-12-01 04:36:14 26 4
gpt4 key购买 nike

我正在尝试使用 hibernate/Java/GWT 动态创建架构,我正在动态创建 cfg.xmlhbm.xml 文件并将其作为 blob 存储在数据库中。

所以我想为架构构建sessionfactory。 同样,我使用 cfg.xml 文件创建 configuration 对象,但由于我的 hbm.xml 文件位于其他表中,它们不是文件系统上的文件,所以如何将其添加到配置中对象作为资源。 我不想在文件系统上为它们创建文件

我尝试了 addInputStream()addFile() 方法,但它们抛出了 MappingNotFoundException

作为常规方法,我知道如何创建 sessionfactory,例如添加 <mapping resource="abc.hbm.xml">标记到 cfg.xml 等中。但是这里我如何将它们添加到配置中,因为我没有 hbm.xml 文件?

我的 cfg.xml 文件存储在表中:

<?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>

我的 hbm.xml 文件存储在表中:

<?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>

最佳答案

得到答案了,我必须使用从数据库读取的文件字节创建文档,然后将它们添加到配置对象中---

创建文档,

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

然后,

hibernateConfiguration.addDocument(doc);

这对我有用。谢谢。

关于java - 如何以编程方式将映射资源添加到 hibernate 配置以创建 session 工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com