I’d like to create a table called dni with that information in mysql server.
@Entity
public class Dni implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false, updatable = false)
private Long id;
private String nombre;
private String apellidos;
private String direccion;
private String fotoPerfil;
private String codigoDni;
private String fechaNacimiento;
public Dni() {
}
public Dni(Long id, String nombre, String apellidos, String direccion, String fotoPerfil, String codigoDni, String fechaNacimiento) {
this.id = id;
this.nombre = nombre;
this.apellidos = apellidos;
this.direccion = direccion;
this.fotoPerfil = fotoPerfil;
this.codigoDni = codigoDni;
this.fechaNacimiento = fechaNacimiento;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getFotoPerfil() {
return fotoPerfil;
}
public void setFotoPerfil(String fotoPerfil) {
this.fotoPerfil = fotoPerfil;
}
public String getCodigoDni() {
return codigoDni;
}
public void setCodigoDni(String codigoDni) {
this.codigoDni = codigoDni;
}
public String getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
@Override
public String toString() {
return "Dni{" +
"id=" + id +
", nombre='" + nombre + ''' +
", apellidos='" + apellidos + ''' +
", direccion='" + direccion + ''' +
", fotoPerfil='" + fotoPerfil + ''' +
", codigoDni='" + codigoDni + ''' +
", fechaNacimiento=" + fechaNacimiento +
'}';
}
}
Querys that failed:
1.”create table dni (id bigint not null, apellidos varchar(255), codigo_dni varchar(255), direccion varchar(255), fecha_nacimiento varchar(255), foto_perfil varchar(255), nombre varchar(255), primary key (id)) engine=MyISAM”
2.”create table hibernate_sequence (next_val bigint) engine=MyISAM”
What I tried:
–> put @Table(name = dni)
–> put this on pom.xml org.hibernate.dialect.MySQL5Dialect
–> put this on application.properties spring.jpa.properties.hibernate.globally_quoted_identifiers=true
Nothing of this worked
Advertisement
Answer
Firstly, When you create just an annotation as @Entity and with sufficient dependency of a database of manual or H2 Database, Spring boot will create a table with the same name as the name of the class.
solution :
Add H2 database dependency for getting the hibernate_sequence table. You will get H2 database dependency in pom.xml as follows :
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Or
You can add a dependency for MYSQL and connect with the database manually using the application.properties file
pom.xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/dnischema spring.datasource.username=root spring.datasource.password=root # Hibernate properties spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect # create, create-drop spring.jpa.hibernate.ddl-auto=update
If u are using the above steps firstly do create a Database in Mysql using the command create database dnischema.
Using this solution u don’t need to create a separate table spring boot will create the table for you.