精华内容
下载资源
问答
  • hibernate修改源代码支持字段注释生成表的字段顺序和外键名称

    开门见山

    hibernate4.3.1

    都是要修改源码的,我找了好久才找到,hibernate自己内部实现了注释是垮数据库的,只是没有注释的注解


    org.hibernate.cfg.Ejb3Column 类copy出来粘贴到项目中修改

    bind方法


    	public void bind() {
    		if ( StringHelper.isNotEmpty( formulaString ) ) {
    			LOG.debugf( "Binding formula %s", formulaString );
    			formula = new Formula();
    			formula.setFormula( formulaString );
    		}
    		else {
    			initMappingColumn(
    					logicalColumnName, propertyName, length, precision, scale, nullable, sqlType, unique, true
    			);
    			if ( defaultValue != null ) {
    				mappingColumn.setDefaultValue( defaultValue );
    			}
    			
    			mappingColumn.setComment(comment);
    			
    			if ( LOG.isDebugEnabled() ) {
    				LOG.debugf( "Binding column: %s", toString() );
    			}
    		}
    	}

    添加了

    mappingColumn.setComment(comment);



    	private static void applyColumnDefault(Ejb3Column column, PropertyData inferredData) {
    		final XProperty xProperty = inferredData.getProperty();
    		if ( xProperty != null ) {
    			ColumnDefault columnDefaultAnn = xProperty.getAnnotation( ColumnDefault.class );
    			if ( columnDefaultAnn != null ) {
    				column.setDefaultValue( columnDefaultAnn.value() );
    			}
    			ApiModelProperty apip = xProperty.getAnnotation( ApiModelProperty.class );
    			column.setComment((apip!=null && apip.value()!=null)?apip.value().replaceAll("'", "\""):"");
    		}
    		else {
    			LOG.trace(
    					"Could not perform @ColumnDefault lookup as 'PropertyData' did not give access to XProperty"
    			);
    		}
    	}

    添加了

    	ApiModelProperty apip = xProperty.getAnnotation( ApiModelProperty.class );
    	column.setComment((apip!=null && apip.value()!=null)?apip.value().replaceAll("'", "\""):"");

    ApiModelProperty是我的注解,你可以写成你的注解 ,我这是接口文档可以给前端人看,然后数据库也用这里面的描述就省了很多事


    外键生成修改,唯一约束名称修改


    org.hibernate.mapping.Constraint


    	public static String hashedName(String s) {
    		return s.replaceAll("`", "_");
    //		try {
    //			MessageDigest md = MessageDigest.getInstance( "MD5" );
    //			md.reset();
    //			md.update( s.getBytes() );
    //			byte[] digest = md.digest();
    //			BigInteger bigInt = new BigInteger( 1, digest );
    //			// By converting to base 35 (full alphanumeric), we guarantee
    //			// that the length of the name will always be smaller than the 30
    //			// character identifier restriction enforced by a few dialects.
    //			return bigInt.toString( 35 );
    //		}
    //		catch ( NoSuchAlgorithmException e ) {
    //			throw new HibernateException( "Unable to generate a hashed Constraint name!", e );
    //		}
    	}


    这样生成的外键名称就是 这样的

    FK_table_bbs_article_column_bbstype_


    表字段数序跟类中定义的顺序一样

    org.hibernate.cfg.PropertyContainer


     

    private final <span style="background-color: rgb(255, 102, 102);">LinkedHashMap</span><String, XProperty> fieldAccessMap;
    
    	/**
    	 * Constains the properties which must be returned in case the class is accessed via {@code AccessType.Property}. Note,
    	 * this does not mean that all {@code XProperty}s in this map are properties/methods. Due to JPA access rules single properties
    	 * can have different access type than the overall class access type.
    	 */
    	private final <span style="background-color: rgb(255, 102, 102);">LinkedHashMap</span><String, XProperty> propertyAccessMap;

    默认是TreeMap改成LinkedHashMap就可以了

    hibernate开发的大神都不看数据库的,所以他们就没考虑这些东西,他们认为用了hibernate就不需要看sql了

    展开全文
  • MySQL 删除外键字段

    千次阅读 2018-08-27 20:38:49
    记录一下踩的坑,同一个数据库下两个表,举个例子 user_info 表中的 username字段设置为外键,关联了 表user_pwd中的主键字段 user,现在因为重建表结构等原因,要把这个外键删除,这里的删除语法为:  ...

        记录一下踩的坑,同一个数据库下两个表,举个例子 user_info 表中的 username字段设置为外键,关联了 表user_pwd中的主键字段 user,现在因为重建表结构等原因,要把这个外键删除,这里的删除语法为: 

        alter table 表名 drop foreign key 外键别名;

        需要注意的是,外键别名并不是设置为外键的字段名,假如我们直接 alter table user_info drop foreign key username;这时候会报语法错误!

        我们要在命令行输入 show create table user_info;这时候会显示建表的信息,有这么一句话 CONSTRAINT `user_info` FOREIGN KEY (`username`) REFERENCES `user_pwd` (`user`)。这时候我们要这么修改 alter table user_info drop foreign key user_info; 这个时候就删除了表中字段的外键约束,这时候我们再 alter table user_info drop username,就可以删除这个原本是外键的字段了!
     

    展开全文
  • PowerDesigner设置外键和外键名称

    千次阅读 2019-09-17 11:29:13
    在物理模型图上创建, 点击palette中的Reference,选择子表拉到父表,这样就出了一条关系线 双击关系线,或右键点击属性... 输入Name ...输入Integrity,这要不输入的话,Preview里的sql中用的不是上面输入的Name ......

    在物理模型图上创建,

    点击palette中的Reference,选择子表拉到父表,这样就出了一条关系线



     

    双击关系线,或右键点击属性,编辑

    输入Name

     

    输入Integrity,这要不输入的话,Preview里的sql中用的不是上面输入的Name

    选择级联操作

     

    预览sql

    转载 https://www.iteye.com/blog/happyqing-2002469

    展开全文
  • django中显示外键的其他字段

    千次阅读 2020-05-29 15:21:38
    class CategoryAdmin(admin.ModelAdmin): list_display = ('name','admins') #admin是外键 def admins(self,obj): return obj.admins.username
    class CategoryAdmin(admin.ModelAdmin):
        list_display = ('name','admins')     #admin是外键
        def admins(self,obj):
            return obj.admins.username

     

    展开全文
  • 今天小编就为大家分享一篇Django REST Framework序列化外键获取外键的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • select 字段序号,字段名,max(外键字段所在的表) as 外键字段所在的表,max(外键字段) as 外键字段,类型 from (SELECT distinct 字段序号=a.colorder , 字段名=a.name , 外键字段所在的表=CASE WHEN tony.fkey is ...
  • 在MySQL数据表中怎样添加外键的两种方式: 第一种方式(创建表之后添加) CREATE TABLE my_classes( class_id INT PRIMARY KEY AUTO_INCREMENT, class_name VARCHAR(20) NOT NULL , class_school_id INT ...
  • Mysql命令添加外键 前提是有这么几个表 以mall_product mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore_pro_cate FOREIGN KEY ( pro_category_id ) REFERENCES mall_category ( ...
  • xadmin 显示外键字段

    千次阅读 2019-07-09 16:47:00
    如果需要显示在list_display中则需要对外键的model进行修改, 然后list_display中填字段名就好 例: #models.py class A(models.Model): ... name = models.CharField(max_length=100, verbose_name='用户名', ...
  • 给一个字段添加外键

    2020-09-07 11:30:16
    首先,给表PMS_ENTERPRISEORGANIZATION要新建一个字段PARENTID ALTER TABLE PMS_ENTERPRISEORGANIZATION ADD PARENTID varchar(50) DEFAULT NULL; 其次是将PARENTID设置为外键,关联的是表PMS_ENTERPRISE的id ALTER...
  • 给字段添加外键约束 ...alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); ALTER TABLE course ADD CONSTRAINT FK_ID FOREIGN KEY(major_id) REFE...
  • 如何将表1中的字段1设置为外键关联表2 alter table 表1 add foreign key (字段1) references 表2(id); 做了这么多怎查看表的外键关联呢。 使用命令查看外键的约束(constraint) show create ta...
  • oracle主外键查询

    2017-05-07 11:39:42
    表结构查询,主外键关联表名查询,
  • sql添加字段并设置外键

    千次阅读 2018-03-31 17:51:45
    添加字段并设置外键 其中外键名是自动生成的 ALTER TABLE job_bill_accident_repair ADD assetTypeId int(11) unsigned DEFAULT NULL; ALTER TABLE job_bill_accident_repair ADD FOREIGN KEY (assetTypeId) ...
  • select * from user_cons_columns cl where cl.column_name = 外键名称
  • 需求是这样的,一个资源表有分类r_class_id(分类表id对应的外键) 创建者r_up_creator(用户表id对应的外键) 审核者r_ver_id (用户表id对应的外键),这时候该怎么将其都查询出来呢? 首先用左连接: select ...
  • 一对一关系,存在主从关系(主表从表 ),主表不包含外键,从表包含外键。 hasOne belongsTo 都是一对一关系,区别: 在主表的模型中建立关联关系,用 hasOne hasOne('别的表模型名','别的表外键名','本表主键...
  • 还有十五分钟图书馆关闭,赶紧来把今天的关于MySQL外键修改的内容...records的user_id是外键,引用数据表users的字段id。 目的 修改外键字段类型为int(10) 先修改了数据表users的字段id为int(10). alter table us...
  • 删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。...这是因为你尝试删除的表中的字段被用作了其他表的外键,因此在删除这个表(父表)之前必须先删除具有外键的表(子表)。也就是说,
  • 这篇博客介绍如何在只知道外键名称的情况下查找到关联的表与列。 环境:Oracle select * from dba_constraints where constraint_name='FK_CONSTRAINT_NAME' and constraint_type = 'R'; 注意外键名称为全大写格式
  • mysql给字段增加外键

    2021-08-17 11:52:44
    ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键列名) REFERENCES (关联表的主键名);
  • 一、admin 显示外键的其他字段 #modelsclass Category(models.Model): name = models.CharField(max_length=64,unique=True) admins = models.ForeignKey(User,blank=True,on_delete=models.CASCADE) c.....
  • 文章目录数据表的创建约束的名称外键约束索引的创建使用 数据表的创建 DEMO:创建一张保存老师信息的表 DROP TABLE teacher PURGE; CREATE TABLE teacher( tno NUMBER(4), tname VARCHAR2(10), tage ...
  • 外键参照列必须创建索引,如果外键列不存在索引,mysql将自动创建索引。 一、SQL语句创建数据表并设置主外键关系 create table demo.ChineseCharInfo ( ID int not null auto_increment, Hanzi varchar(10) ...
  • 对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义外键的时候需要遵守几个规则: 1、父表必须已经存在于数据库中,或者是当前正在创建的表。如果是...
  • mysql对表进行添加字段、添加索引添加外键
  • 1.查询表的字段 SELECT column_name FROM user_tab_columns where table_name = upper('表名') ; 2.查询表的字段以及类型 SELECT table_name, column_name, data_type FROM all_tab_cols WHERE table_name = '表名...
  • SQL Server 添加主外键 字段自增长

    千次阅读 2018-11-24 19:28:58
    1.新建一个表[Student](先不考虑主外键 自增长) 可以使用SQL Server工具直接建立,右击’‘表’'选择新建表,如下: 也可以使用SQL语句直接建表,SQL语句如下: USE [BlogDemo] --使用BlogDemo数据库 ...
  • mysql 移除外键字段

    2019-07-06 09:53:30
    ALTER TABLE scm_acceptance DROP FOREIGN KEY FK_ptihrmuk40ri92c82avx32ogl (对应inputOrderUserId字段KEY名) 删除inputOrderUserId字段 ALTER TABLE scm_acceptance DROP COLUMN inputOrderUserId 更新下面语句 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 156,154
精华内容 62,461
关键字:

外键名称和外键字段