参考:https://www.baeldung.com/spring-boot-sqlite
1.方言问题
报错:Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
See, Hibernate doesn’t ship with a Dialect for SQLite. We need to create one ourselves.
或者参考另外一篇文章:
https://stackoverflow.com/questions/46990525/problems-with-dialect-sqlite-3-with-hibernate-5
有写好的方言(我用的这种)
<!-- https://mvnrepository.com/artifact/com.zsoltfabok/sqlite-dialect -->
<dependency>
<groupId>com.zsoltfabok</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>1.0</version>
</dependency>
2.路径 问题:
读取对应目录文件: jdbc:sqlite:F:/test1.db
3.加密的问题:
没解决。改为不加密了。。
4.动态修改数据源的问题。使用的是spring boot ,spring data jpa
sqlite的路径动态改变,通过接口传入,去解析不同sqlite文件里的数据
@Configuration
public class DataSourceAutoConfiguration {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.sqlite.JDBC");
dataSource.setUrl("jdbc:sqlite:d:/xxx.db");
dataSource.setUsername("");
dataSource.setPassword("");
return dataSource;
}
}
控制器类中:
@Autowired
private DriverManagerDataSource dataSource;
控制器方法中动态改变
dataSource.setUrl("jdbc:sqlite:d:/xxx.db");
5.sqlite插入guid
lower(hex(randomblob(16)))
6.sqlite boolean类型的问题
我存了默认值 true,修改其中两个值为1,然后又修改默认值为0 结果发现SQLite Expert Professional 和Database .NET 17.0.5798_3@87104 这两个工具查看结果不一样,
用原始的sqlite3 exe 查看发现里面有的数据是0,有的是true.
个人推测:SQLite Expert 把true当做了 1 就是真。而 database .net 把true当做字符串 "true" 作为了假
所以显示不一样。
所以直接存0,1 就可以了,两边工具查看都是一致的。不要用true这种可能被当做字符串
原文如下: