MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

    Hibernate 前置插件,ORM 数据库框架,群/好友消息记录

    插件发布
    orm 数据库
    6
    41
    5866
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • cssxsh
      cssxsh @Abandoned9 last edited by

      @Abandoned9
      你有看过 readme.md 吗
      https://github.com/cssxsh/mirai-hibernate-plugin#一些方法和类说明

      A 1 Reply Last reply Reply Quote 0
      • A
        Abandoned9 @cssxsh last edited by

        @cssxsh 看了但不是很明白,我连Entity注解都没法使用

        cssxsh 1 Reply Last reply Reply Quote 0
        • cssxsh
          cssxsh @Abandoned9 last edited by cssxsh

          @Abandoned9
          ?
          你确定项目加载完毕了吗
          或者把所谓不能使用的情况说的清楚一些

          A 1 Reply Last reply Reply Quote 0
          • A
            Abandoned9 @cssxsh last edited by

            @cssxsh 我是使用IDEA的Mirai插件创建的项目,在我使用gradle引入mirai-hibernate-plugin之后,它确实出现在了我项目的Dependencies下面的compileClasspath中,但我在项目的外部库中看不到这个依赖,并且它没有任何报错,项目也确定加载完毕,我清除过缓存,删除过.gradle和build让它们重新生成,但是这依然没有用。我使用过idea分析依赖关系,也确实看到它有那些依赖,但我就是无法在项目的外部库里看到这个依赖

            cssxsh 1 Reply Last reply Reply Quote 0
            • cssxsh
              cssxsh @Abandoned9 last edited by

              @Abandoned9
              加一下这个 zaxxer:HikariCP 需要 jdk11 ,我引入之后忘记该 readme 了,抱歉

              mirai {
                  jvmTarget = JavaVersion.VERSION_11
              }
              
              A 1 Reply Last reply Reply Quote 0
              • A
                Abandoned9 @cssxsh last edited by

                @cssxsh O~K,问题已经得到解决,十分感谢,所以如果我想要在我的插件里使用Hibernate作持久层的话,是不是只需要在项目的/src/main/resources目录下创建hibernate.properties就行了呢?

                cssxsh 1 Reply Last reply Reply Quote 0
                • cssxsh
                  cssxsh @Abandoned9 last edited by cssxsh

                  @Abandoned9
                  建议你按照我 示例里的方法
                  用 MiraiHibernateConfiguration ( Plugin)
                  自动生成配置文件(生成的配置文件在插件数据目录(config)下,默认用文件数据库 h2database 在插件数据目录(data), 可以修改)

                  这样可以随用户自定义去修改,放在 /src/main/resources 并不合适(用户不能修改),而且我也没有设计从 /src/main/resources 读取,这需要由你自己配置 HibernateConfiguration 管理加载行为

                  A 1 Reply Last reply Reply Quote 0
                  • cssxsh
                    cssxsh @hellostronger last edited by

                    @hellostronger
                    MessageRecord 有提供 方法

                    toMessageChain 和 toMessageSource,反序列化得到原消息

                    1 Reply Last reply Reply Quote 0
                    • cssxsh
                      cssxsh last edited by

                      @39c5bb

                      请检查启动时期的日志 (logs文件夹有历史日志)

                      1 Reply Last reply Reply Quote 0
                      • A
                        Abandoned9 @cssxsh last edited by

                        @cssxsh 十分抱歉,我太菜了,那个kt的onEnable里面的示例能改造成java吗,我看的不是很明白那个kt的语法....

                        cssxsh 1 Reply Last reply Reply Quote 0
                        • cssxsh
                          cssxsh @Abandoned9 last edited by

                          @Abandoned9
                          如果
                          你是想用数据库存自己的数据

                          Configuration configuration = new MiraiHibernateConfiguration(MyPlugin)
                          

                          这样子就能拿到自动生成的配置了
                          其他可以直接去看 Hibernate 6.0 的官方文档
                          http://docs.jboss.org/hibernate/orm/6.1/quickstart/html_single/

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            Abandoned9 @cssxsh last edited by

                            @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 1 Reply Last reply Reply Quote 0
                            • cssxsh
                              cssxsh @Abandoned9 last edited by

                              @Abandoned9 在 Mirai Hibernate 前置插件,用于 Hibernate ORM 框架的初始化,历史消息持久化 中说:

                              https://pastebin.mozilla.org/rybKVFOA

                              你没有定义插件依赖吗
                              https://github.com/mamoe/mirai/blob/dev/mirai-console/docs/plugin/JVMPlugin.md#有关插件依赖的说明

                              A 3 Replies Last reply Reply Quote 0
                              • A
                                Abandoned9 @cssxsh last edited by

                                @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: 允许在聊天环境执行指令。
                                
                                1 Reply Last reply Reply Quote 0
                                • A
                                  Abandoned9 @cssxsh last edited by

                                  @cssxsh 而且我在项目的debug-sandbox/plugin-libraries能够看到mirai-hibernate-plugin的依赖,但它还是报这个错误

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    Abandoned9 @cssxsh last edited by

                                    @cssxsh 额,上面的问题我解决了,我把插件手动放到plugin目录就行了,但是...
                                    https://pastebin.mozilla.org/sJgx693R
                                    (非常抱歉...我太菜了,这都没整明白)

                                    cssxsh 1 Reply Last reply Reply Quote 0
                                    • cssxsh
                                      cssxsh @Abandoned9 last edited by

                                      @Abandoned9
                                      你没有把 Entry 类定义在 cn.doghome.entry 下面吗

                                      A 1 Reply Last reply Reply Quote 0
                                      • A
                                        Abandoned9 @cssxsh last edited by

                                        @cssxsh 十分感谢,我看了一下源码清楚了,我之前实体类的包一直都叫entity。。。现在已经没问题啦!

                                        1 Reply Last reply Reply Quote 0
                                        • 3
                                          39c5bb @cssxsh last edited by

                                          @cssxsh 73295b87-6a1f-4901-a21b-b8579baddfc0-R_3KT7_P92L7XF8{PE5Q02L.png 登不上去了,最开始加载就直接显示hibernate 损坏

                                          cssxsh 1 Reply Last reply Reply Quote 0
                                          • cssxsh
                                            cssxsh @39c5bb last edited by cssxsh

                                            @39c5bb
                                            ?

                                            我没从 你给的日志看出和我的插件又什么关系
                                            这更像是应该要汇报给mirai官方的消息

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 2 / 3
                                            • First post
                                              Last post
                                            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact