Hibernate 前置插件,ORM 数据库框架,群/好友消息记录
-
-
@cssxsh 看了但不是很明白,我连Entity注解都没法使用
-
@Abandoned9
?
你确定项目加载完毕了吗
或者把所谓不能使用的情况说的清楚一些 -
@cssxsh 我是使用IDEA的Mirai插件创建的项目,在我使用gradle引入mirai-hibernate-plugin之后,它确实出现在了我项目的Dependencies下面的compileClasspath中,但我在项目的外部库中看不到这个依赖,并且它没有任何报错,项目也确定加载完毕,我清除过缓存,删除过.gradle和build让它们重新生成,但是这依然没有用。我使用过idea分析依赖关系,也确实看到它有那些依赖,但我就是无法在项目的外部库里看到这个依赖
-
@Abandoned9
加一下这个 zaxxer:HikariCP 需要 jdk11 ,我引入之后忘记该 readme 了,抱歉mirai { jvmTarget = JavaVersion.VERSION_11 }
-
@cssxsh O~K,问题已经得到解决,十分感谢,所以如果我想要在我的插件里使用Hibernate作持久层的话,是不是只需要在项目的
/src/main/resources
目录下创建hibernate.properties
就行了呢? -
@Abandoned9
建议你按照我 示例里的方法
用 MiraiHibernateConfiguration ( Plugin)
自动生成配置文件(生成的配置文件在插件数据目录(config)下,默认用文件数据库 h2database 在插件数据目录(data), 可以修改)这样可以随用户自定义去修改,放在 /src/main/resources 并不合适(用户不能修改),而且我也没有设计从 /src/main/resources 读取,这需要由你自己配置 HibernateConfiguration 管理加载行为
-
@hellostronger
MessageRecord 有提供 方法toMessageChain 和 toMessageSource,反序列化得到原消息
-
请检查启动时期的日志 (logs文件夹有历史日志)
-
@cssxsh 十分抱歉,我太菜了,那个kt的onEnable里面的示例能改造成java吗,我看的不是很明白那个kt的语法....
-
@Abandoned9
如果
你是想用数据库存自己的数据Configuration configuration = new MiraiHibernateConfiguration(MyPlugin)
这样子就能拿到自动生成的配置了
其他可以直接去看 Hibernate 6.0 的官方文档
http://docs.jboss.org/hibernate/orm/6.1/quickstart/html_single/ -
@cssxsh 它给了我这个错误https://pastebin.mozilla.org/rybKVFOA
我是下面这么导入的@Override public void onEnable() { Configuration configuration = new MiraiHibernateConfiguration(DogHomeBot.INSTANCE); SessionFactory factory = configuration.buildSessionFactory(); DatabaseMetaData metaData = factory.openSession().doReturningWork(Connection::getMetaData); try { System.out.println(metaData.getDriverName()); }catch (SQLException e){ e.printStackTrace(); } CommandManager.INSTANCE.registerCommand(DogHomeMeme.INSTANCE,false); CommandManager.INSTANCE.registerCommand(DogHomeGame.INSTANCE,false); } }
-
-
@cssxsh 这是我的JavaPlugin class
public final class DogHomeBot extends JavaPlugin { public static final DogHomeBot INSTANCE = new DogHomeBot(); private DogHomeBot() { super(JvmPluginDescription.loadFromResource()); } @Override public void onEnable() { Configuration configuration = new MiraiHibernateConfiguration(DogHomeBot.INSTANCE); SessionFactory factory = configuration.buildSessionFactory(); DatabaseMetaData metaData = factory.openSession().doReturningWork(Connection::getMetaData); try { System.out.println(metaData.getDriverName()); }catch (SQLException e){ e.printStackTrace(); } CommandManager.INSTANCE.registerCommand(DogHomeMeme.INSTANCE,false); CommandManager.INSTANCE.registerCommand(DogHomeGame.INSTANCE,false); getLogger().info("狗窝机器人插件已加载"); } }
这是我的plugin.yml
id: cn.doghome version: 0.0.1 name: DogHome Bot author: Seuyon dependencies: - "xyz.cssxsh.mirai.plugin.mirai-hibernate-plugin" info: 允许在聊天环境执行指令。
-
@cssxsh 而且我在项目的debug-sandbox/plugin-libraries能够看到mirai-hibernate-plugin的依赖,但它还是报这个错误
-
@cssxsh 额,上面的问题我解决了,我把插件手动放到plugin目录就行了,但是...
https://pastebin.mozilla.org/sJgx693R
(非常抱歉...我太菜了,这都没整明白) -
@Abandoned9
你没有把 Entry 类定义在 cn.doghome.entry 下面吗 -
@cssxsh 十分感谢,我看了一下源码清楚了,我之前实体类的包一直都叫entity。。。现在已经没问题啦!
-
@cssxsh 登不上去了,最开始加载就直接显示hibernate 损坏
-
@39c5bb
?我没从 你给的日志看出和我的插件又什么关系
这更像是应该要汇报给mirai官方的消息