JPA+Springboot小限制

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的自动建表也是