当前位置: 首页 > news >正文

江苏省建设工程一站式申报网站网站搭建博客

江苏省建设工程一站式申报网站,网站搭建博客,wordpress不允许注册,网络广告策划书的内容现在的情况是#xff0c;在MySQL中有db1和db2两个数据库。项目使用Hibernate#xff0c;可同时访问db1和db2#xff0c;默认数据库为db1。表table2在db2中。且table2的主键名为ids#xff0c;是自增长字段#xff08;Auto Increment#xff09;。 table2和ids的定义为在MySQL中有db1和db2两个数据库。项目使用Hibernate可同时访问db1和db2默认数据库为db1。表table2在db2中。且table2的主键名为ids是自增长字段Auto Increment。 table2和ids的定义为 Entity Table(name table2, schema db2) Cache(usage CacheConcurrencyStrategy.READ_WRITE) public class Table2 implements java.io.Serializable {private static final long serialVersionUID 48L;IdColumn(name ids)GeneratedValue(generator idGenerator, strategy GenerationType.IDENTITY)GenericGenerator(name idGenerator, strategy increment)private Integer ids; 当向table2中保存数据时会报错。原因是生成ids时系统会查询table2中ids的最大值。语句是 select max(ids) from table2 由于默认数据库是db1因此查询的是db1.table2表。但table2表实际上在db2中所以系统找不到该表从而报错。 这就需要在GenericGenerator中指定max查询语句的schema。通过检查错误信息发现对应代码在org.hibernate.id.IncrementGenerator.configure()方法中如下 public void configure(Type type, Properties params, Dialect dialect) throws MappingException {returnClass type.getReturnedClass();ObjectNameNormalizer normalizer ( ObjectNameNormalizer ) params.get( PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER );String column params.getProperty( column );if ( column null ) {column params.getProperty( PersistentIdentifierGenerator.PK );}column dialect.quote( normalizer.normalizeIdentifierQuoting( column ) );String tableList params.getProperty( tables );if ( tableList null ) {tableList params.getProperty( PersistentIdentifierGenerator.TABLES );}String[] tables StringHelper.split( , , tableList );final String schema dialect.quote(normalizer.normalizeIdentifierQuoting(params.getProperty( PersistentIdentifierGenerator.SCHEMA )));final String catalog dialect.quote(normalizer.normalizeIdentifierQuoting(params.getProperty( PersistentIdentifierGenerator.CATALOG )));StringBuilder buf new StringBuilder();for ( int i0; i tables.length; i ) {final String tableName dialect.quote( normalizer.normalizeIdentifierQuoting( tables[i] ) );if ( tables.length 1 ) {buf.append( select max( ).append( column ).append( ) as mx from );}buf.append( Table.qualify( catalog, schema, tableName ) );if ( i tables.length-1 ) {buf.append( union );}}if ( tables.length 1 ) {buf.insert( 0, ( ).append( ) ids_ );column ids_.mx;}sql select max( column ) from buf.toString();} 在初始化Table2实体类时该方法就会执行。作用是生成对应数据库的select max语句。 在IncrementGenerator的注释中有一段话 Mapping parameters supported, but not usually needed: tables, column. (The tables parameter specified a comma-separated list of table names.) 说明在GenericGenerator中可以设置参数。在IncrementGenerator.configure()方法中可以将这些参数读出来。读取参数的方法为params.getProperty(参数名)。例如 params.getProperty( column ) 就是读取column参数的值。对应读取schema的语句为 final String schema dialect.quote(normalizer.normalizeIdentifierQuoting(params.getProperty( PersistentIdentifierGenerator.SCHEMA )) ); schema的参数名就是PersistentIdentifierGenerator.SCHEMA也就是schema。其他预置保留参数的值大都在org.hibernate.id.PersistentIdentifierGenerator中定义。如 public interface PersistentIdentifierGenerator extends IdentifierGenerator {/*** The configuration parameter holding the schema name*/public static final String SCHEMA schema;/*** The configuration parameter holding the table name for the* generated id*/public static final String TABLE target_table;/*** The configuration parameter holding the table names for all* tables for which the id must be unique*/public static final String TABLES identity_tables;/*** The configuration parameter holding the primary key column* name of the generated id*/public static final String PK target_column;/*** The configuration parameter holding the catalog name*/public static final String CATALOG catalog;/*** The key under whcih to find the {link org.hibernate.cfg.ObjectNameNormalizer} in the config param map.*/public static final String IDENTIFIER_NORMALIZER identifier_normalizer; 在GenericGenerator中设置parameter的方法为 Id Column(name ids) GeneratedValue(generator idGenerator, strategy GenerationType.IDENTITY) GenericGenerator(name idGenerator, strategy increment, parameters Parameter(name PersistentIdentifierGenerator.SCHEMA, value db2)) private Integer ids; 这样就能在table2前加上正确的schema名称db2生成正确的查询语句 select max(ids) from db2.table2 如果有多个参数可以写为 GenericGenerator(name idGenerator, strategy increment, parameters {             Parameter(name PersistentIdentifierGenerator.SCHEMA, value db2),             Parameter(namePersistentIdentifierGenerator.CATALOG, value db2) })
http://www.dnsts.com.cn/news/110831.html

相关文章:

  • 网站 会员系统 织梦十大经典营销案例
  • 公司网站建设推合同网站建设建站培训
  • 表白网站怎样做有创意wordpress百科插件
  • 做手机网站尺寸大小一个空间怎么放多个网站
  • 5 网站建设进度表WordPress有什么作用
  • 桌面上链接网站怎么做营销公司排行
  • 中国海员建设工会网站在淘宝做印刷网站怎么办
  • discuz可以做门户网站么go 网站开发
  • 自己的网站怎么做跳转wordpress怎么建淘宝客
  • 宝宝投票网站怎么做跨境电商千万别做亚马逊
  • 网站分为哪几种注册企业邮箱免费
  • 国内漂亮的企业网站wordpress性能检测
  • 大专网站建设论文wordpress电子邮件要用什么
  • 除了红动中国还有哪些设计网站岳阳网站建设免费咨询
  • 网站建设打广告贴吧推广
  • 杭州网站排名优化公司怎么套模板 网站模板
  • 安康那个公司做网站好网站生成app
  • 长沙网站开发设计wordpress cms下载地址
  • 怎么选择大连网站建设怎么把自己做的网站传网上
  • 用dede做网站去掉版权定西临洮网站建设
  • 做一个网站的计划书中国接单外发加工网
  • 投资理财网站模板办公空间设计经典案例
  • 一些网站只能在微信打开怎么做的阳东城乡规划建设局网站
  • 建设银行官方网站网页版桂林人论坛新鲜事爆料
  • 南昌网站开发机构wordpress 设置七牛
  • 破解php网站后台账号密码中国有名的网站建设公司
  • 厦门建设局长单一产品网站如何做seo
  • 四川建站网站作业代做
  • 建立soho公司网站互联网广告优势
  • 网站建设源代码共享百度推送 wordpress