Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.hibernate.annotations.GenericGenerator;
- import javax.persistence.*;
- // Пошаманить з User и настройками hibernate
- @Entity
- @Table(name = "user")
- public class User {
- @Id
- @GeneratedValue(generator = "increment")
- @GenericGenerator(name = "increment", strategy = "increment")
- private long id;
- @Column(nullable = false, length = 20)
- private String nickname;
- @Column(nullable = false, length = 20)
- private String password;
- @Column(length = 2)
- private String country;
- public User() {}
- public long getId() {
- return id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getNickname() {
- return nickname;
- }
- public void setNickname(String nickname) {
- this.nickname = nickname;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getCountry() {
- return country;
- }
- public void setCountry(String country) {
- this.country = country;
- }
- }
- [2016-05-27 10:08:59,668] Artifact MessengerServer:war: Artifact is being deployed, please wait...
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- SLF4J: Defaulting to no-operation (NOP) logger implementation
- SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
- 27-May-2016 10:09:02.569 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.jpa.internal.util.LogHelper.logPersistenceUnitInformation HHH000204: Processing PersistenceUnitInfo [
- name: default
- ...]
- 27-May-2016 10:09:02.671 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.Version.logVersion HHH000412: Hibernate Core {5.1.0.Final}
- 27-May-2016 10:09:02.674 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.cfg.Environment.<clinit> HHH000205: Loaded properties from resource hibernate.properties: {hibernate.show_sql=true, hibernate.bytecode.use_reflection_optimizer=false, hibernate.hbm2ddl.auto=create, hibernate.dialet=org.hibernate.dialect.PostgreSQL9Dialect}
- 27-May-2016 10:09:02.674 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.cfg.Environment.buildBytecodeProvider HHH000021: Bytecode provider name : javassist
- 27-May-2016 10:09:02.732 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.annotations.common.reflection.java.JavaReflectionManager.<clinit> HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
- 27-May-2016 10:09:03.206 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.dialect.Dialect.<init> HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL94Dialect
- 27-May-2016 10:09:03.366 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl.useContextualLobCreation HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
- 27-May-2016 10:09:03.368 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.type.BasicTypeRegistry.register HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@48909093
- Hibernate: drop table if exists room cascade
- Hibernate: drop table if exists user cascade
- 27-May-2016 10:09:04.181 WARN [RMI TCP Connection(29)-127.0.0.1] org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl.handleException GenerationTarget encountered exception accepting command : Unable to execute command [drop table if exists user cascade]
- org.hibernate.tool.schema.spi.CommandAcceptanceException: Unable to execute command [drop table if exists user cascade]
- at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:63)
- at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:370)
- at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings(SchemaDropperImpl.java:355)
- at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:240)
- at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:153)
- at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:125)
- at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:111)
- at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:137)
- at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:64)
- at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:458)
- at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465)
- at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:881)
- at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
- at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
- at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
- at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
- at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
- at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
- at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
- at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
- at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4809)
- at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5251)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
- at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1696)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
- at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
- at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
- at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484)
- at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
- at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
- at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
- at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
- at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
- at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
- at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
- at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
- at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
- at sun.rmi.transport.Transport$1.run(Transport.java:200)
- at sun.rmi.transport.Transport$1.run(Transport.java:197)
- at java.security.AccessController.doPrivileged(Native Method)
- at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
- at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
- at java.security.AccessController.doPrivileged(Native Method)
- Hibernate: create table room (id int8 not null, author varchar(255) not null, title varchar(30) not null, primary key (id))
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
- at java.lang.Thread.run(Thread.java:745)
- Caused by: org.postgresql.util.PSQLException: ОШИБКА: ошибка синтаксиса (примерное положение: "user")
- Позиция: 22
- at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
- at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
- at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:366)
- at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:291)
- at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:291)
- at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:51)
- ... 72 more
- Hibernate: create table user (id int8 not null, country varchar(2), nickname varchar(20) not null, password varchar(20) not null, primary key (id))
- 27-May-2016 10:09:04.241 WARN [RMI TCP Connection(29)-127.0.0.1] org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl.handleException GenerationTarget encountered exception accepting command : Unable to execute command [create table user (id int8 not null, country varchar(2), nickname varchar(20) not null, password varchar(20) not null, primary key (id))]
- org.hibernate.tool.schema.spi.CommandAcceptanceException: Unable to execute command [create table user (id int8 not null, country varchar(2), nickname varchar(20) not null, password varchar(20) not null, primary key (id))]
- at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:63)
- at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:423)
- at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:408)
- at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:310)
- at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:165)
- at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:134)
- at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:120)
- at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:148)
- at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:64)
- at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:458)
- at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465)
- at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:881)
- at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
- at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
- at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
- at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
- at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
- at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
- at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
- at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
- at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4809)
- at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5251)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
- at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1696)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
- at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
- at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
- at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484)
- at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
- at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
- at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
- at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
- at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
- at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
- at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
- at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
- at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
- at sun.rmi.transport.Transport$1.run(Transport.java:200)
- at sun.rmi.transport.Transport$1.run(Transport.java:197)
- at java.security.AccessController.doPrivileged(Native Method)
- at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
- at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
- at java.security.AccessController.doPrivileged(Native Method)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
- at java.lang.Thread.run(Thread.java:745)
- Caused by: org.postgresql.util.PSQLException: ОШИБКА: ошибка синтаксиса (примерное положение: "user")
- Позиция: 14
- at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
- at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
- at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:366)
- at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:291)
- at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:291)
- at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:51)
- ... 72 more
- 27-May-2016 10:09:04.247 INFO [RMI TCP Connection(29)-127.0.0.1] org.hibernate.tool.schema.internal.SchemaCreatorImpl.applyImportSources HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@2850dd14'
- [2016-05-27 10:09:05,739] Artifact MessengerServer:war: Artifact is deployed successfully
- [2016-05-27 10:09:05,739] Artifact MessengerServer:war: Deploy took 6 071 milliseconds
- hibernate.dialet = org.hibernate.dialect.PostgreSQL9Dialect
- hibernate.show_sql = true
- hibernate.hbm2ddl.auto = create
- db.driver = org.postgresql.Driver
- db.url = jdbc:postgresql://localhost:5432/messengerdb
- db.username = postgres
- db.password = root
- db.entity.package = ua.samuliak.messenger.entity
- db.initialSize = 30
- db.minIdle = 30
- db.maxIdle = 60
- db.timeBetweenEvictionRunsMillis = 30000
- db.minEvictableIdleTimeMillis = 60000
- db.testOnBorrow = true
- db.validationQuery = select version()
- @Table(name=""user"")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement