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 :
application.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 http://localhost:8080/types/getAllTypes http://localhost:8080/types/insert
Mes dependences dans le pom.xml pour la configuration de sqlite,hibernate and spring :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ma table type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Mon entity type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE IF NOT EXISTS type( idType integer NOT NULL PRIMARY KEY AUTOINCREMENT, description varchar(256) NOT NULL )
Mon interface TypeService :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 TypeServiceImpl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public interface TypeService { Collection<Type> getAllTypes(); Type createType(Type type); }
Mon TypeRepository :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 controlleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface TypeRepository extends CrudRepository<Type,Long> { Type findByDescription(String description); }
Et enfin ma classe de démarrage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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")); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Partager