Hibernate, spring et sqlite
Bonjour à tous
J'ai un problème avec sqlite3,hibernate et spring.En fait, si je démarre le programme et que j'appelle la méthode createType() qui permet de créer un type et qu'après j'appelle la méthode getAllTypes() j'ai bel et bien les valeurs de l'objet que je viens de créer qui s'affichent dans le navigateur.Mais si je vérifie avec un "select * from type" dans ma table type pour voir si l'objet a été ajouté dans ma table, j'ai aucun enregistrement.En plus,dès que je redemarre le programme et que j'appelle la méthode getAllTypes() pour consulter les données de ma table j'ai plus rien qui s'affiche dans mon navigateur.Encore, pour chaque démarrage on dirait que l'ID est reinitialisé puisqu'il commence à 1(par exemple si après avoir demarré mon programme je tente d'insérer 2 objets avec la methode createType() j'ai : ID = 1 et ID = 2 qui s'affiche dans mon navigateur).Donc si mes données ne sont pas enregistrées dans ma table où sont-ils passées? J'ai fait 2 enrgistrements manuellement dans ma table et j'arrive pas aussi à récupérer ces 2 enregistrements avec la méthodes getAllTypes() qui est censé me renvoyer tous les enregistrements de ma table.Je me dit qu'il y a peut-être un problème de communication entre mon programme et ma base de données.Merci d'avance pour vos aides.
Voilà comment j'appelle mes méthodes dans le navigateurs :
Code:
1 2 3
|
http://localhost:8080/types/getAllTypes
http://localhost:8080/types/insert |
application.yml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
spring:
profile:dev
jpa:
hibernate:
hbm2ddl.auto:update
properties:
hibernate:
dialect:org.hibernate.dialect.SQLiteDialect
datasource:
url:jdbc:sqlite:C:\Users\user pc\Desktop\PDF\testrest.db
username:user
password:password
driverClassName:org.sqlite.JDBC |
Mes dependences dans le pom.xml pour la configuration de sqlite,hibernate and spring :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<type>pom</type>
</parent>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.12.Final</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.20.1</version>
</dependency>
<dependency>
<groupId>com.zsoltfabok</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.12.Final</version>
</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-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
<dependency> |
Ma table type:
Code:
1 2 3 4 5
|
CREATE TABLE IF NOT EXISTS type(
idType integer NOT NULL PRIMARY KEY AUTOINCREMENT,
description varchar(256) NOT NULL
) |
Mon entity type:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="typedifficulte")
public class Type {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long idType;
private String description;
public Type() {
}
public Type(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public long getIdType() {
return idType;
}
public void setIdType(long idType) {
this.idType = idType;
}
} |
Mon interface TypeService :
Code:
1 2 3 4 5
|
public interface TypeService {
Collection<Type> getAllTypes();
Type createType(Type type);
} |
Mon TypeServiceImpl :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
import javax.annotation.Resource;
import org.apache.commons.collections4.IteratorUtils;
import org.springframework.stereotype.Service;
@Service(value="typeService")
public class TypeServiceImpl implements TypeService {
@Resource
private TypeRepository typeRepository;
@Override
public Collection<Type> getAllTypes() {
return IteratorUtils.toList(this.typeRepository.findAll().iterator());
}
@Override
public Type createType(Type type) {
return this.typeRepository.save(type);
}
public TypeRepository getTypeRepository() {
return typeRepository;
}
public void setTypeRepository(TypeRepository typeRepository) {
this.typeRepository = typeRepository;
}
} |
Mon TypeRepository :
Code:
1 2 3 4
|
public interface TypeRepository extends CrudRepository<Type,Long> {
Type findByDescription(String description);
} |
Mon controlleur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
@RestController
@RequestMapping(value ="/types")
public class TypeController {
@Resource
private TypeService typeService;
@RequestMapping(value= "/getAllTypes", method = RequestMethod.GET)
public Collection<Type> getAllTypes() {
return this.typeService.findAll();
}
@RequestMapping(value = "/insert",method = RequestMethod.GET)
public Type createType() {
return this.typeService.createType(new Type("test"));
}
} |
Et enfin ma classe de démarrage :
Code:
1 2 3 4 5 6 7 8 9
|
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class MainLauncher {
public static void main(String[] args) {
SpringApplication.run(MainLauncher.class, args);
}
} |