JPA+Springboot小限制
限制一
-
通过JPA(Hibernate)在MySQL环境下自动建表要注意,JPA的默认字段长度为255,而如果数据库中存在索引不能超过768bytes的限制,则需要考虑自己手工维护表
-
限制来源于JPA或默认新建一个记录序号的表,此表的主键为Varchar(255),且程序员无法修改,只要编码长度是超过三字节编码,则建表失败
-
可以通过SpringData/Hibernate自动调用classpath下特定的sql文件特性绕过
-
但如果抛弃了由hibernate做表维护而转为程序员手工维护表关系则不如采用mybatis方案更为直接
限制二
-
hibernate自动建表时候,是没法设置在哪个schame下或者哪个catalog下建表,如果DB的其他schame有同名表,则建表会失败
-
此限制来源于Hibernate做数据库元数据查询时候只使用了table字段,且我无法找到可以让查询元数据时候指定schame+table联合确定table是否存在的办法
-
此限制的场景会在Junit测试时候如果想做schame隔离是无法做到的
-
一并发现此问题的还有activiti的自动建表也是