作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ResultSetMetaData
对象。
PreparedStatement ps=con.prepareStatement("select var1, var2 from test1, test2");
ResultSet rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
System.out.println("Total columns: "+rsmd.getColumnCount());
System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));
System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));
我需要创建一个新的空表,其中包含上述 ResultSetMetaData 中的所有字段
我可以看到两种可能的解决方案
bean
。但我事先并不知道 ResultSetMetaData
将包含哪些字段。我应该用反射创建这个 bean
吗? 最简单的方法是什么?我该怎么做?
最佳答案
我能想到的几个解决方案:
SchemaExport
- 遍历您的 ResultSetMetaData,它公开 API,例如 getColumnName和 getColumnType获取您需要的信息。
使用此信息创建 hibernate 映射 XML 并将其发送到 SchemaExport.create .
// yourClassMapper.xml generated in runtime
Configuration config = new Configuration();
config.addResource("yourClassMapper.xml");
new SchemaExport(config).create(true,true)
native 查询
- 像往常一样遍历您的元数据以确定列应该是什么。
使用 createSQLQuery甚至使用 createNativeQuery
session.createSQLQuery("create table .....").executeUpdate();
这link提供有关如何创建自定义字段的说明。您可以将其 DOM 解析器用于第一种方法,或者只创建表并使用本博客中提到的方法来创建自定义字段。 (引用该类MappingManager
及其相关的自定义 map 配置)
最后,您需要为此配置 2 个不同的数据源。并在上述实现中注入(inject)第二个数据库的源以创建 session / session 工厂。
关于java - hibernate 。如何从 ResultSetMetaData 创建一个空表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41734719/
我是一名优秀的程序员,十分优秀!