RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-272943

Vaagn Akopyan's questions

Martin Hope
Vaagn Akopyan
Asked: 2024-10-23 19:06:45 +0000 UTC

无法通过 Spring Boot 连接到具有读取权限的 PostgreSQL 数据库中的表

  • 5

任务如下 - 需要连接到现有数据库,该数据库具有对包含许多表的特定模式的读取访问权限。我正在尝试连接到其中一张表(重复访问但不读取)。该表包含大约 50 列。我的最终目标是简单地在某个 ArrayList 中显示该表的内容。

这是我这个新手的问​​题开始的地方:

  1. 是否有必要在实体类中注册表中存在的所有列,还是只注册那些我感兴趣的列就足够了?
  2. 为什么会出现下面的错误呢?需要做什么

应用程序.属性:

#PostgresDB
spring.dt.datasource.jdbc-url=jdbc:postgresql://dbserver:5432/postgres?currentSchema=myschema
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.dt.datasource.driverClassName=org.postgresql.Driver
spring.dt.datasource.username=user
spring.dt.datasource.password=password
spring.dt.datasource.initialization-mode=always
spring.dt.datasource.initialize=true



spring.jpa.hibernate.ddl-auto = none
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-request-size=10MB

实体表:

package org.workproject.XLSX4.EntityDB2.models;


import jakarta.persistence.*;

@Entity
@Table
public class tbl_downtimes {


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Integer id;

    @Column
    String title;

    String shortdescript;

    String state;


    public tbl_downtimes() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getShortdescript() {
        return shortdescript;
    }

    public void setShortdescript(String shortdescript) {
        this.shortdescript = shortdescript;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }
}

错误:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table if exists tbl_downtimes alter column id set data type integer" via JDBC [ERROR: must be owner of table tbl_downtimes]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:575) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:515) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.migrateTable(AbstractSchemaMigrator.java:333) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:84) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:232) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:117) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:280) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:144) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at java.base/java.util.HashMap.forEach(HashMap.java:1421) ~[na:na]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:141) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:322) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:457) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1506) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1835) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952) ~[spring-context-6.1.8.jar:6.1.8]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.8.jar:6.1.8]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.workproject.XLSX4.Xlsx4Application.main(Xlsx4Application.java:10) ~[classes/:na]
Caused by: org.postgresql.util.PSQLException: ERROR: must be owner of table tbl_downtimes
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2268) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:313) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:310) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:296) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:273) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:268) ~[postgresql-42.2.12.jar:42.2.12]
    at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-5.1.0.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-5.1.0.jar:na]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    ... 37 common frames omitted

2024-10-23T13:46:41.241+03:00  WARN 31184 --- [XLSX4] [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "alter table if exists tbl_downtimes alter column title set data type varchar(255)" via JDBC [ERROR: must be owner of table tbl_downtimes]

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table if exists tbl_downtimes alter column title set data type varchar(255)" via JDBC [ERROR: must be owner of table tbl_downtimes]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:575) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:515) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.migrateTable(AbstractSchemaMigrator.java:333) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:84) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:232) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:117) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:280) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:144) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at java.base/java.util.HashMap.forEach(HashMap.java:1421) ~[na:na]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:141) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:322) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:457) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1506) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1835) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952) ~[spring-context-6.1.8.jar:6.1.8]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.8.jar:6.1.8]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.workproject.XLSX4.Xlsx4Application.main(Xlsx4Application.java:10) ~[classes/:na]
Caused by: org.postgresql.util.PSQLException: ERROR: must be owner of table tbl_downtimes
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2268) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:313) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:310) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:296) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:273) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:268) ~[postgresql-42.2.12.jar:42.2.12]
    at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-5.1.0.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-5.1.0.jar:na]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    ... 37 common frames omitted

2024-10-23T13:46:41.247+03:00  WARN 31184 --- [XLSX4] [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "create sequence tbl_downtimes_SEQ start with 1 increment by 50" via JDBC [ERROR: permission denied for schema nausd40]

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create sequence tbl_downtimes_SEQ start with 1 increment by 50" via JDBC [ERROR: permission denied for schema nausd40]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:575) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:515) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySequence(AbstractSchemaMigrator.java:298) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:253) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:117) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:280) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:144) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at java.base/java.util.HashMap.forEach(HashMap.java:1421) ~[na:na]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:141) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:322) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:457) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1506) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1835) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.8.jar:6.1.8]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952) ~[spring-context-6.1.8.jar:6.1.8]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.8.jar:6.1.8]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.0.jar:3.3.0]
    at org.workproject.XLSX4.Xlsx4Application.main(Xlsx4Application.java:10) ~[classes/:na]
Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for schema nausd40
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2268) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:313) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:310) ~[postgresql-
postgresql
  • 2 个回答
  • 35 Views
Martin Hope
Vaagn Akopyan
Asked: 2024-10-08 03:57:15 +0000 UTC

虽然可以通过 Postman 登录,但无法通过 Jira API 登录

  • 5

我可以通过 Postman 登录(下面的屏幕截图),但不能通过程序(下面的代码)登录,我收到 401 错误(下面的屏幕截图)。请告诉我可能是什么问题?

在此输入图像描述

Public class RestClient {

private String server = "company.com";
private RestTemplate rest;
private HttpHeaders headers;
private HttpStatusCode status;

public RestClient() {

    this.rest = new RestTemplate();
    this.headers = new HttpHeaders();
    headers.add("Content-Type", "application/json");
    headers.add("Accept", "*/*");
    //headers.add("Accept-Encoding","gzip, deflate, br");
    headers.add("Connection","keep-alive");


    String basicAuth = "Basic " + new String(Base64.getEncoder().encode("user:password".getBytes()));
    System.out.println(basicAuth);

    headers.add("Authorization", basicAuth);

}

  public String get(String uri) {

    HttpEntity<String> requestEntity = new HttpEntity<String>("", headers);
    ResponseEntity<String> responseEntity = rest.exchange(server + uri, HttpMethod.GET, requestEntity, String.class);
    this.setStatus(responseEntity.getStatusCode());

    System.out.println(requestEntity.getBody());
    return responseEntity.getBody();
}

这是错误

在此输入图像描述

POM XML:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>pirp2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>pirp2</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>17</java.version>
        <start-class>com.example.pirp2.PiroApp</start-class>

        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>

    </properties>

    <dependencies>

    
        <dependency>
            <groupId>net.rcarz</groupId>
            <artifactId>jira-client</artifactId>
            <version>0.5</version>
        </dependency>



      
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20240205</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mustache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

  
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        

        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>

        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>

        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>



        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
java
  • 1 个回答
  • 35 Views
Martin Hope
Vaagn Akopyan
Asked: 2024-09-30 18:54:54 +0000 UTC

无法在小胡子扩展中正确显示编码

  • 4

我无法通过 Spring boot 配置西里尔文中带有 Mustache 扩展名的文件的显示

这是控制器根据请求 /addexcel 传输到的 Mustach 文件:

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Отправка файла на сервер</title>
</head>
<body>

<div>

    <form action="\logout" method="post">
        <input type="submit" value="Выйти"/>
    </form>

</div>
<div></div>
<div></div>

<h3>Добавьте файл для расчета статистики:</h3>
<div></div>
<div></div>
<form enctype="multipart/form-data" method="post" action="/getResult">
    <p><input type="file" name="file">
        <input type="submit" value="Отправить"></p>
</form>
<div></div>
<div></div>

</body>
</html>

以下是应用程序属性:

spring.application.name=XLSX4

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-request-size=10MB

这是 pom.xml:

modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.workproject</groupId>
    <artifactId>XLSX5</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>XLSX5</name>
    <description>XLSX parcer  project for Spring Boot</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>

    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mustache</artifactId>
        </dependency>

        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity6</artifactId>
            <!-- Temporary explicit version to fix Thymeleaf bug -->
            <version>3.1.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

它的显示方式如下:

在此输入图像描述

html
  • 2 个回答
  • 21 Views
Martin Hope
Vaagn Akopyan
Asked: 2024-09-22 00:35:29 +0000 UTC

如何在 Mustache 中输出 ArrayList<String>?

  • 6

假设我有一个名为 的对象"WB",并且该对象包含ArrayListname "result"。在我的 Spring boot 控制器中,WB 表示为("WB",WB).在 Mustache 模板中WB,一切正常:

{{#WB}}
{{someStringObjectFromWB}}
{{/WB}}

但我不知道如何ArrayList ("result")以相同的方式(如果可能的话)迭代我的:

{{#WB}}
{{result}}
{{/WB}}

请帮忙。

我尝试做这样的事情,但它不起作用:

{{#WB}}
{{#result}}{{.}} {{/result}}
{{/WB}}

控制器代码:

@PostMapping (/getResult)
public String res (Map<String,Object>stat){

WB wb= WB.calc();

stat.put("wb",wb);


}

通过变量名称输出常规字符串整数对象没有问题。但我不明白如何显示列表。

这是小胡子文件:

 {{#wb}}
        {{#result}}
         
     <ul>{{item}}</ul>
        
       
        {{/result}}
        
{{/wb}}
java
  • 1 个回答
  • 27 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-01-31 16:48:46 +0000 UTC

未使用 Spring JPA 从 H2 DB 加载数据

  • 0

我正在尝试使用 Spring JPA 从 H2 数据库中卸载所有数据,单击 http://localhost:8080/greeting链接 后,输出为空。如何从表中获取所有数据?

控制器:

package RestExample.MainPack.Controller;

import RestExample.MainPack.model.salespointdo;
import RestExample.MainPack.repos.SalesPointRepos;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    @Autowired
    SalesPointRepos salesPointRepos;


    @GetMapping("/greeting")
    @ResponseBody
    public String greeting() {


        salespointdo ss= new salespointdo();

        Iterable<salespointdo> allSP=salesPointRepos.findAll();

        StringBuilder sb= new StringBuilder();

        allSP.forEach(sp->sb.append(sp+"<br>"));


        return  allSP.toString();
    }
}

实体:

    package RestExample.MainPack.model;

import javax.persistence.*;

@Entity
@Table(name = "salespointdo")
public class salespointdo {

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Long id;

 @Column(name = "name")
 private String name;

 @Column(name = "city")
 private String city;

 @Column(name = "address")
 private String address;

    public salespointdo() {
    }

    public Long getID() {
        return id;
    }

    public void setID(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "City: "+getCity()+" "+"Address: "+getAddress();
    }
}

存储库:

    package RestExample.MainPack.repos;

import RestExample.MainPack.model.salespointdo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;


@Repository
public interface SalesPointRepos extends CrudRepository<salespointdo,Long> {



}

弹簧靴:

package RestExample.MainPack;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;



@SpringBootApplication
public class StartRest {

    public static void main(String[] args) {
        SpringApplication.run(StartRest.class, args);



    }
}

应用程序属性:

spring.h2.console.enabled=true



spring.datasource.url=jdbc:h2:./SalesPoint
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=user
spring.datasource.password=pass
spring.datasource.platform=h2



spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

在此处输入图像描述

数据库截图

以上导致SpringBoot和H2表的日志以及执行结果

结果

java
  • 1 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-09-23 07:24:20 +0000 UTC

如何在Java中比较相同数组的字符串?

  • 0

假设我们有一个数组

String[] names = {"Bill", "Den", "James", "Den", "Loris", "Bill", "Den"};

如何在 for 循环中(或以其他方式)将这些行相互比较?我的任务正是打印重复的字符串(数组元素)的名称,并打印每个字符串在数组中出现的次数。

这是一个具体的例子,但有些地方不太对劲。

static public Map<String, Integer> getDuplicate(ArrayList<Unit> list) {
    Map<String, Integer> dupEl = new HashMap<>();
    int count = 0;

    for (int i = list.size() - 1; i > 0; i--) {
        for (int j = 0; j < i; j++) {
            if (list.get(j).equals(list.get(i))) {
                dupEl.put(list.get(i).toString(), ++count);
            }
        }
    }
    return dupEl;
}

单元类没什么花哨的,测试类:

public class Unit {
    private String name;
    private int age;

    public Unit(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Unit unit = (Unit) o;

        if (age != unit.age) return false;
        return name != null ? name.equals(unit.name) : unit.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString() {
        return "name='" + name;
    }
}

就此而言,这里是列表本身和方法调用:

ArrayList<Unit> mylist = new ArrayList<>();

mylist.add(new Unit("Edik", 40));
mylist.add(new Unit("Bill", 35));
mylist.add(new Unit("Grace", 25));
mylist.add(new Unit("Jason", 37));
mylist.add(new Unit("Edik", 40));

/* 1) Найти дубликаты  в списке
 * 2) Вывести название дублируемого объекта
 * 3) Указать количество раз, когда встречается объект в списке.
 * */
getDuplicate(mylist).forEach((k, v) -> System.out.println(k + ": " + v));
java
  • 3 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-08-25 04:09:45 +0000 UTC

java中的递归方法。如果它只是返回自己,答案从何而来?

  • 0

我想了解系统如何理解您需要在屏幕上显示值 4?此方法计算最大公约数,但 系统如何确定如何在屏幕上显示结果?毕竟,这种方法的结果只能有两种选择,在我看来,它们是: 1)变量 P 2)相同的方法 gcd(int p, int q)

public class GCD {
     public static void main(String[] args) {
            System.out.println(gcd(4, 8));
        }

        public static int gcd(int p, int q)
        {
            if (q == 0) return p;
            int r = p % q;
            return gcd(q, r);
        }

    }

输出:4

java
  • 1 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-08-19 01:52:38 +0000 UTC

如何从另一个包访问内部类变量?

  • 1

如果是,如何在一个类C中访问str内部类的变量, 该变量PubInnerClass位于该类А中protected?

这是A类:

package Trash.ModAccess.A;

public class ClassA {

    public class PubInnerClass {

        protected   String str="word";

    }

}

这是C类:

package Trash.ModAccess.C;

import Trash.ModAccess.A.ClassA;

public class ClassC extends ClassA {

    public static void main(String[]args) {

    }

}
java
  • 1 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-07-28 03:18:53 +0000 UTC

如何将Excel文件中的数据导入地图?在java中

  • 0

这是一个文件的屏幕截图。

下午好!

请告诉我如何通过 Apache POI 库从 Excel 上传数据,以便将它们放置在地图中。例如,文件有一个名字列和一个交互列,您需要将它们放在地图中,以便每个名称对应于所有交互的总和,即 map 的 key 应该是 firstname , value 应该是其对应交互的总和。那些。例如,对于 Denis,总和将为 7。

java
  • 2 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-07-13 22:50:42 +0000 UTC

帮助在java中编写正则表达式

  • 1

假设有一条线4534%^$!@!Фамилия4534%^$!@! Имя 4534%^$!@!Отчество 4534%^$!@!

有必要通过正则表达式将这一行替换为 Last Name First Name Patronymic,也就是说,单词 (Last Name First Name Patronymic) 之间只有一个空格,并且在单词 Last Name 之前和之后什么都没有word Patronymic(没有字符,没有字母和数字的空格)。

请帮帮我。重要的是要了解,而不是姓氏名字Patronymic可能是Ivan Ivan Ivanovich Artyukhin Alexey Petrovich等。

java
  • 1 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-05-23 05:26:03 +0000 UTC

如何在 servlet 上添加、编辑、保存对象

  • 2

在 JSP 页面上实现了一个简单的书目录,其数据是使用 Hibernate 从 OracleSQL 数据库中提取的。在同一页面上,有一个带有字段 ( input) "name"、"author"的表单"year"和一个用于添加到数据库的提交按钮。目录中每个条目的对面都有按钮update, delete。从数据库中添加和删除数据没有问题,但更新不起作用。

问题是方法中的servletdoPost条件不if成立(我通过debug发现,),即else if (action.equals("update")) ..... 我马上说ID正确的书挑对的那一行,没有问题,不要伤脑筋(调试)。

我承认我可能正在尝试执行一个完全幼稚的操作,但请帮助我弄清楚如何仍然实现从数据库输出数据并在同一个 JSP 页面上进行编辑。到目前为止,事实证明是删除和添加。我请您在需要添加或更改的地方戳一下手指。在此先感谢大家的详细解答。对于我的实用建议,两瓶啤酒放在你的钱包里)

我将给出所有代码页,但首先是 servlet 本身(Servletclass.class)和 JSP 类(BookStore.jsp)。

 package ru.home.echo;


import ru.home.echo.control.ControlClass;
import ru.home.echo.entity.Books;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ServletClass extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        ControlClass controlClass= new ControlClass();
        RequestDispatcher rd = null;
        resp.setContentType("text/html");

        if (req.getParameter("action" )!=null) {

            if (req.getParameter("action").equals("delete")) {

                int id = Integer.parseInt(req.getParameter("id"));
                Books books = new Books();
                books.setId(id);

                controlClass.deleteBook(books);

                List<Books> book = controlClass.getAllData();
                req.setAttribute("Books", book);
                rd = req.getRequestDispatcher("BookStore.jsp");
            }

            else if (req.getParameter("action").equals("update")){

                int id = Integer.parseInt(req.getParameter("id").toString());


                Books book = controlClass.getBooksById(id);
                req.setAttribute("booking", book);
                req.setAttribute("action", "update");

                List<Books> books = controlClass.getAllData();
                req.setAttribute("Books", books);

                rd = req.getRequestDispatcher("BookStore.jsp");

            }
        }
        else {

            List<Books> books = controlClass.getAllData();
            req.setAttribute("Books", books);
            rd = req.getRequestDispatcher("BookStore.jsp");
        }

        rd.forward(req, resp);
    }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String action = req.getParameter("action").toString();
        resp.setContentType("text/html");

        RequestDispatcher rd=null;
        if(action.equals("new")) {
            Books books = new Books();
            ControlClass controlClass = new ControlClass();

            req.setAttribute("booking", books);

            books.setName(req.getParameter("bookname").toString());
            books.setAuthor(req.getParameter("bookauthor").toString());
            books.setYear(Integer.parseInt(req.getParameter("bookyear")));

            controlClass.saveBook(books);


            List<Books> booksList = controlClass.getAllData();
            req.setAttribute("Books", booksList);
            rd = req.getRequestDispatcher("BookStore.jsp");
        }

        else if(action.equals("update")){

            Books book= new Books();
            book.setName(req.getParameter("bookname").toString());
            book.setAuthor(req.getParameter("bookauthor").toString());
            book.setYear(Integer.parseInt(req.getParameter("bookyear")));

            book.setId(Integer.parseInt(req.getParameter("bookingid").toString()));

            ControlClass controlClass= new ControlClass();
            controlClass.updateBook(book);

            List<Books>booksList= controlClass.getAllData();
            req.setAttribute("Books",booksList);
            rd=req.getRequestDispatcher("BookStore.jsp");

        }



        rd.forward(req,resp);

    }
}

BookStore.jsp 页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <meta charset="UTF-8">
    <title>BooksStore</title>
    <style type="text/css">

        .tdser {background: #cccccc;}


        td {
            font-family: Arial, sans-serif;
            font-size: 14px;
            padding: 10px 5px;
            border-style: solid;
            border-width: 1px;
            overflow: hidden;
            word-break: normal;
            border-color: black;
            color: #333;
            background-color: #fff;
        }

        table { border-collapse: collapse;
            border-spacing: 0;
            border-color: #ccc;}

    </style>

</head>
<body>

<table >
    <tr id="toptr">
        <td class="tdser">ID</td>
        <td class="tdser">NAME</td>
        <td class="tdser">AUTHOR</td>
        <td class="tdser">YEAR</td>
    </tr>

<c:forEach items="${Books}" var="book">
    <tr id="downtr">
        <td>${book.id}</td>
        <td>${book.name}</td>
        <td>${book.author}</td>
        <td>${book.year}</td>
        <td><a href="/books?action=delete&id=${book.id}">delete</a></td>
        <td><a href="/books?action=update&id=${book.id}">update</a></td>
    </tr>
</c:forEach>


</table>
<br>
<br>
<form action="/books" method="post">



    Book name:<input type="text" name="bookname" value="${booking.name}"><br><br>
    Book author:<input type="text" name="bookauthor" value="${booking.author}"><br><br>
    Book year:<input type="text" name="bookyear" value="${booking.year}"><br><br>
    <input type="hidden" value="new" name="action">
    <input type="hidden" value="${booking.id}" name="bookingid">
              <input type="submit" value="submit">

</form>




</body>
</html>

Books.class(实体):

package ru.home.echo.entity;


import javax.persistence.*;

@Entity
@Table(name = "BOOKS")
public class Books {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "bookIdGen")
@SequenceGenerator(name = "bookIdGen", sequenceName = "BOOK_SEQ",allocationSize = 1)

long id;

@Column(name = "NAME")
String name;

@Column(name = "AUTHOR")
String author;

@Column(name = "YEAR")
int year;


    public Books() {
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    @Override
    public String toString() {
        return "Entity{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", year=" + year +
                '}';
    }
}

ControlClass 类(控制器):

package ru.home.echo.control;


import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import ru.home.echo.DAO.GetSession;
import ru.home.echo.entity.Books;

import java.util.ArrayList;
import java.util.List;

public class ControlClass {



    public List<Books> getAllData(){

        GetSession getSession= new GetSession();
        Session session= getSession.getSessionFactory().openSession();
        List<Books>book=new ArrayList<>();
        Query query=session.createQuery("from Books book");
        book= query.list();

        return  book;


    }

    public void saveBook(Books book) {
        GetSession getSession= new GetSession();
        Session session= getSession.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(book);
        t.commit();
        System.out.println("inserted.......");

    }


    public void deleteBook(Books book) {
        GetSession getSession= new GetSession();
        Session session= getSession.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(book);
        t.commit();


    }


    public void updateBook(Books book) {
        GetSession getSession= new GetSession();
        Session session= getSession.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(book);
        t.commit();

    }


    public Books getBooksById(int id){

        String query = "from Books book where book.id="+id;

        GetSession getSession= new GetSession();
        Session session= getSession.getSessionFactory().openSession();

        Query query2 = session.createQuery(query);

        Books book= (Books) query2.list().get(0);

        return book;
    }

}

获取 SessionFactory 的类:

package ru.home.echo.DAO;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;


import java.util.Locale;

public class GetSession {

    private static SessionFactory sessionFactory=createSessionFactory();
    private static ServiceRegistry serviceRegistry;


    public static SessionFactory createSessionFactory() {
        try {

            Locale.setDefault(Locale.ENGLISH);
            Configuration configuration = new Configuration();
            configuration.configure();
            ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                    configuration.getProperties()).build();
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);
            return sessionFactory;
        }

        catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }

    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        getSessionFactory().close();
    }
}

最后是 WEB.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <display-name>HibernateExampleWithServlets</display-name>


    <servlet>
        <servlet-name>BooksServlet</servlet-name>
        <servlet-class>ru.home.echo.ServletClass</servlet-class>
    </servlet>


    <servlet-mapping>
        <servlet-name>BooksServlet</servlet-name>
        <url-pattern>/books</url-pattern>
    </servlet-mapping>

</web-app>
java
  • 2 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-03-28 18:39:53 +0000 UTC

如何在 JS 中将 onclick 设置为几个按钮标签?

  • 0

你好!

意思很简单,就是当你点击某个按钮时,需要打开一个带有某个文本的div(每个按钮的文本都不一样)。问题是实施起来有多容易。是否有必要为每个按钮分配一个单独的 id 并为每个按钮创建一个单独的函数(它用所需的文本绘制一个 div)还是有更人性化的方法?

p / s 有人建议通过课堂来做,但后来我不明白它是如何工作的,因为你不能参考课堂上的特定文本。

<html>
        <head>
                <script type="text/javascript" src="test.js"></script>
                <title>ariadna wiki</title>
                <link rel="stylesheet" type="text/css" href="style.css">
        </head>
            <body>

                <div>
                    <ul>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    <button> </button>
                    </ul> 
                </div>

           </body>
        </html>
javascript
  • 2 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-02-24 20:32:43 +0000 UTC

如何在maven中设置默认的jdk编译器版本?

  • 1

当我通过 maven 创建任何原型时,如何将编译器版本默认更改为 1.8。或者我是否必须在属性中的 POM 文件中指定每次

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

目前,如果我不指定上述代码,我会收到错误消息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project unit-test: Compilation failure: Compilation failure: 
[ERROR] Source option 1.5 is no longer supported. Use 1.6 or later.
[ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.
[ERROR] -> [Help 1]
java
  • 1 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-15 20:54:31 +0000 UTC

当我点击它时,我希望图像发生变化。

  • 1

你好!js文件中应该写什么代码,这样当你点击hello.png图片时,图片会变成world.png(和hello.png在同一个文件夹下)。需要再次点击时,图片返回hello.png。

function oClick(e) {
  var element = document.getElementById("f2");
  if (element.style.backgroundImage) {
    element.style.backgroundImage = null; // clean up for next click
  } else {
    element.style.backgroundImage = "url('img/hell.jpg')"; // set new value
  }
}
<img src="pic/hello.png" id="myPic">

我尝试了类似这个功能的东西,但是我的图片消失了,当我再次点击它时没有任何反应。

javascript
  • 3 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-13 22:23:34 +0000 UTC

如何在按钮单击时获得 div 块?

  • 2

如何使当您单击站点上的“按钮”时,按钮下方会出现一个带有一些现成文本的 DiV 块?

javascript
  • 3 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-13 05:30:04 +0000 UTC

数组如何影响 Map 集合?爪哇

  • 1

有这样的代码。

public class CSVtestclass {

public static void main(String[] args) throws IOException {


    String FileName = "c:\\TestJava\\report.csv";

    File file = new File(FileName);



    try (BufferedReader read = new BufferedReader(new FileReader(file))) {
        String reader;
        String wordName;
        String wordCount;
        HashMap<String, int[]> stringIntegerHashMap = new HashMap<>();
        read.readLine();
        while ((reader = read.readLine()) != null) {
            try {

                String[] next = reader.split(";");
                wordName = next[10];
                wordCount= next[17];
                wordCount = wordCount.replace("\"", "");
                if (stringIntegerHashMap.containsKey(wordName)) {
                    int[] ints = stringIntegerHashMap.get(wordName);
                    ints[0]++;
                    ints[1] += Integer.parseInt(wordCount);
                } else {
                    stringIntegerHashMap.put(wordName, new int[]{1, Integer.parseInt(wordCount)});
                }
            } catch (NumberFormatException e) {
                System.out.println(e);
            }
        }

        for (Map.Entry<String, int[]> pair : stringIntegerHashMap.entrySet()) {
            int[] value = pair.getValue();
            System.out.printf("%s zayavki: %d interakcii: %d%n", pair.getKey(), value[0], value[1]);
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    }
}

我只是无法理解数组 []ints 如何设法影响 stringIntegerHashMap 元素的结果???毕竟,他只是粗略地“为自己工作”。那些。它的结果没有分配到任何地方,但它设法做到了 - 即对地图中键的值求和。

` if (stringIntegerHashMap.containsKey(wordName)) {
                    int[] ints = stringIntegerHashMap.get(wordName);
                    ints[0]++;
                    ints[1] += Integer.parseInt(wordCount);
                } else {
                    stringIntegerHashMap.put(wordName, new int[]{1, Integer.parseInt(wordCount)});
java
  • 2 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-08 18:58:11 +0000 UTC

爪哇。如何将数组 []String 或 []int 分别转换为 List<String> 或 List<Integer>?

  • 4

如何将数组分别转换为String[]或转换int[]为List<String>或List<Integer>?我了解如何通过循环来做到这一点,但我想知道是否有专门针对此的方法?可以不用循环吗?我请你举个例子。

java
  • 4 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-07 01:36:29 +0000 UTC

java中的多线程,为什么结果的输出顺序不一样?

  • 5

假设有这样的代码。它的结果是:[Synchronization] [in Java] [useful]。如果对象Caller在没有单独线程的情况下运行(即没有extends Thread和没有方法start()),那么结果将采用不同的顺序:[同步] [有用] [在 Java 中]。为什么会这样?请给出详细的答复。

class CallMe {
    void call(String msg) {
        System.out.print("[" + msg );
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("]");
    }
}
class Caller extends Thread {
    String msg;
    CallMe target;

    Caller(CallMe target, String msg) {
        this.target = target;
        this.msg = msg;
        start();
    }

    public void run() {
        synchronized (target) {
            target.call(msg);
        }
    }
}
public class Main {
    public static void main(String[] args) {
        CallMe callMe = new CallMe();
        new Caller(callMe, "Синхронизация");
        new Caller(callMe, "в Java");
        new Caller(callMe, " полезная");
    }
}
java
  • 1 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-02 05:32:33 +0000 UTC

读取 CSV 文件时出现 NumberFormatException 错误

  • 0

有一个report.CSV文件。

该程序的任务是计算列中的单词出现的次数,并计算列中每个单词的К列中数字的总和。RК

这是程序:

public class CSVtestclass {

    public static void main(String[] args) throws IOException {    

        String FileName = "c:\\TestJava\\report.csv";    
        File file = new File(FileName);
        Map<String, WordInfo> wordInfoMap = new HashMap<>();    

        try(BufferedReader read = new BufferedReader(new FileReader(file))){
            String s;
            String wordName;
            HashMap<String, int[]> stringIntegerHashMap = new HashMap<>();
            read.readLine();
            while( (s = read.readLine()) != null) {
                String[] next = s.split(";");
                wordName = next[10];
                if (stringIntegerHashMap.containsKey(wordName)) {
                    int[] ints = stringIntegerHashMap.get(wordName);
                    ints[0]++;
                    ints[1] += Integer.parseInt(next[17]);
                } else {
                    stringIntegerHashMap.put(wordName, new int[]{1, Integer.parseInt(next[17])});
                }
            }

            for (Map.Entry<String, int[]> pair: stringIntegerHashMap.entrySet()) {
                int[] value = pair.getValue();
                System.out.printf("%s zayavki: %d interakcii: %d%n", pair.getKey(), value[0], value[1]);
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

执行程序时出现以下错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""0""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:638)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at CSVpack.CSVtestclass.main(CSVtestclass.java:31)

错误图片

我哪里做错了?

java
  • 2 个回答
  • 10 Views
Martin Hope
Vaagn Akopyan
Asked: 2020-12-02 04:43:40 +0000 UTC

通过 BuffeReader 读取时如何跳过 CSV 文件中的一行?

  • 1

假设有一个文件 test.csv,有一个表:

 Name   Age  Count
 Bob    25     4
 Sam    45     5

问题是,要编写什么代码,以便在读取流时跳过第一行Name;Age;Count并立即从第二行开始Bob;25;4?

这是代码:

public class CSVtestclass {

    public static void main(String[] args) throws IOException {


        String FileName = "c:\\TestJava\\test.csv";

        File file = new File(FileName);
        Map<String, WordInfo> wordInfoMap = new HashMap<>();


        try(BufferedReader read = new BufferedReader(new FileReader(file))){
            String s;
            String wordName;
            HashMap<String, int[]> stringIntegerHashMap = new HashMap<>();
            while( (s = read.readLine()) != null) {
                String[] next = s.split(";");
                wordName = next[0];
                if (stringIntegerHashMap.containsKey(wordName)) {
                    int[] ints = stringIntegerHashMap.get(wordName);
                    ints[0]++;
                    ints[1] += Integer.parseInt(next[3]);
                } else {
                    stringIntegerHashMap.put(wordName, new int[]{1, Integer.parseInt(next[3])});
                }
            }

            for (Map.Entry<String, int[]> pair: stringIntegerHashMap.entrySet()) {
                int[] value = pair.getValue();
                System.out.printf("%s zayavki: %d interakcii: %d%n", pair.getKey(), value[0], value[1]);
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

}
java
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5