salut tout le monde
j'ai débuter avec un projet Spring hibernate qui contient 2 tableau Produit et categorie avec une Base de donnée MySql
voila la classe Produit
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.example.entities;
 
import java.io.Serializable;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
 
@Entity
public class Produit implements Serializable {
 
	@Id
	@GeneratedValue
	private Long idProduit;
	@Column(length = 70)
	private String designation;
	private double prix;
	private int qunatite;
	@ManyToOne
	@JoinColumn(name = "ID_CAT")
	private Categorie categorie;
 
	public Categorie getCategorie() {
		return categorie;
	}
 
	public void setCategorie(Categorie categorie) {
		this.categorie = categorie;
	}
 
	public Long getIdProduit() {
		return idProduit;
	}
 
	public void setIdProduit(Long idProduit) {
		this.idProduit = idProduit;
	}
 
	public String getDesignation() {
		return designation;
	}
 
	public void setDesignation(String designation) {
		this.designation = designation;
	}
 
	public double getPrix() {
		return prix;
	}
 
	public void setPrix(double prix) {
		this.prix = prix;
	}
 
	public int getQunatite() {
		return qunatite;
	}
 
	public void setQunatite(int qunatite) {
		this.qunatite = qunatite;
	}
 
	public Produit() {
		super();
	}
 
	public Produit(String designation, double prix, int qunatite) {
		super();
		this.designation = designation;
		this.prix = prix;
		this.qunatite = qunatite;
	}
 
	public Produit(String designation, double prix, int qunatite,
			Categorie categorie) {
		super();
		this.designation = designation;
		this.prix = prix;
		this.qunatite = qunatite;
		this.categorie = categorie;
	}
 
}
et voila la classe Categorie
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
package com.example.entities;
 
import java.io.Serializable;
import java.util.Collection;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
 
@Entity
public class Categorie implements Serializable {
 
	@Id
	@GeneratedValue
	private Long idCategorie;
	@Column(length = 70)
	private String nomCategorie;
	@OneToMany(mappedBy="categorie",fetch=FetchType.LAZY)
	private Collection<Produit> produits;
 
	public Collection<Produit> getProduits() {
		return produits;
	}
 
	public void setProduits(Collection<Produit> produits) {
		this.produits = produits;
	}
 
	public Long getIdCategorie() {
		return idCategorie;
	}
 
	public void setIdCategorie(Long idCategorie) {
		this.idCategorie = idCategorie;
	}
 
	public String getNomCategorie() {
		return nomCategorie;
	}
 
	public void setNomCategorie(String nomCategorie) {
		this.nomCategorie = nomCategorie;
	}
 
	public Categorie() {
		super();
	}
 
	public Categorie(String nomCategorie) {
		super();
		this.nomCategorie = nomCategorie;
	}
 
}
et l'interface (les différentes chose à le faire )
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
package com.exemple.dao;
 
import java.util.List;
 
public interface EntityRepository<T> {
 
	public T save(T p);
 
	public List<T> findAll();
 
	public List<T> findByDesignation(String mc);
 
	public List<T> findOne(Long id);
 
	public T udpdate(T p);
 
	public void delete(Long id);
 
}
et la classe d’implémentation
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
package com.exemple.dao;
 
import java.util.List;
 
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.Transactional;
 
import org.springframework.stereotype.Repository;
 
import com.example.entities.Produit;
 
@Repository
@Transactional
public class ProduitImplDaoImentation implements EntityRepository<Produit> {
 
	@PersistenceContext
	private EntityManager em;
 
	public Produit save(Produit p) {
		em.persist(p);
		return p;
	}
 
	public List<Produit> findAll() {
		Query req = em.createQuery("Select p from Produit p");
		return req.getResultList();
	}
 
	public List<Produit> findByDesignation(String mc) {
		Query req = em
				.createQuery("Select p from Produit p where p.designation like :x");
		em.setProperty("x", mc);
		return req.getResultList();
	}
 
	public List<Produit> findOne(Long id) {
		Produit p = em.find(Produit.class, id);
		return (List<Produit>) p;
	}
 
	public Produit udpdate(Produit p) {
		em.merge(p);
		return p;
	}
 
	public void delete(Long id) {
		Produit p = em.find(Produit.class, id);
		em.remove(p);
	}
 
}
le code d' application.properties
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
spring.datasource.url = jdbc:mysql://localhost:3306/struts
spring.datasource.username = root
spring.datasource.password =
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = create
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.main.banner-mode = log
je devrais ajouter et tester les données dans les tableaux Produit et Categorie dans ma BD struts
voila le code de menu principale de mon application
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
package com.example;
 
import com.exemple.dao.EntityRepository;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
 
import com.example.entities.Produit;
 
@SpringBootApplication
public class TpExemplesApplication {	
 
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		ApplicationContext apx= (ApplicationContext) SpringApplication.run(TpExemplesApplication.class, args);		
		EntityRepository<Produit> produitDao =apx.getBean(EntityRepository.class);				
		produitDao.save(new Produit("AS ", 7410, 85));
		produitDao.save(new Produit("Ah ", 852, 5));
		produitDao.save(new Produit("HP ", 1500, 100));		
	}
}
les tableaux sont ajouter avec ses composants sans l'insertion des données et voila le code d'erreur
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
2016-11-27 13:26:46.403  INFO 6112 --- [           main] com.example.TpExemplesApplication        : Starting TpExemplesApplication on Wajih-PC with PID 6112 (started by java in C:\travail Kepler\TP_Exemples)
2016-11-27 13:26:46.403  INFO 6112 --- [           main] com.example.TpExemplesApplication        : No active profile set, falling back to default profiles: default
2016-11-27 13:26:46.899  INFO 6112 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5e8bc44a: startup date [Sun Nov 27 13:26:46 WAT 2016]; root of context hierarchy
2016-11-27 13:26:49.835  INFO 6112 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [class org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$fe08ed4b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2016-11-27 13:26:50.830  INFO 6112 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-11-27 13:26:50.847  INFO 6112 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2016-11-27 13:26:50.849  INFO 6112 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.6
2016-11-27 13:26:51.005  INFO 6112 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2016-11-27 13:26:51.006  INFO 6112 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 4111 ms
2016-11-27 13:26:51.376  INFO 6112 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2016-11-27 13:26:51.383  INFO 6112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2016-11-27 13:26:51.384  INFO 6112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2016-11-27 13:26:51.384  INFO 6112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2016-11-27 13:26:51.385  INFO 6112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2016-11-27 13:26:52.011  INFO 6112 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2016-11-27 13:26:52.047  INFO 6112 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
	name: default
	...]
2016-11-27 13:26:52.198  INFO 6112 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.0.11.Final}
2016-11-27 13:26:52.202  INFO 6112 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2016-11-27 13:26:52.205  INFO 6112 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2016-11-27 13:26:52.310  INFO 6112 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2016-11-27 13:26:52.871  INFO 6112 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2016-11-27 13:26:53.530  INFO 6112 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
Hibernate: alter table produit drop foreign key FK6mfi292w75rgsluywqkrtbdtn
Hibernate: drop table if exists categorie
Hibernate: drop table if exists produit
Hibernate: create table categorie (id_categorie bigint not null auto_increment, nom_categorie varchar(70), primary key (id_categorie))
Hibernate: create table produit (id_produit bigint not null auto_increment, designation varchar(70), prix double precision not null, qunatite integer not null, id_cat bigint, primary key (id_produit))
Hibernate: alter table produit add constraint FK6mfi292w75rgsluywqkrtbdtn foreign key (id_cat) references categorie (id_categorie)
2016-11-27 13:26:55.577  INFO 6112 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete
2016-11-27 13:26:55.629  INFO 6112 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2016-11-27 13:26:56.363  INFO 6112 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5e8bc44a: startup date [Sun Nov 27 13:26:46 WAT 2016]; root of context hierarchy
2016-11-27 13:26:56.526  INFO 6112 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-11-27 13:26:56.527  INFO 6112 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-11-27 13:26:56.606  INFO 6112 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-11-27 13:26:56.606  INFO 6112 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-11-27 13:26:56.707  INFO 6112 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-11-27 13:26:56.799  WARN 6112 --- [           main] .t.AbstractTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
2016-11-27 13:26:58.357  INFO 6112 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2016-11-27 13:26:58.463  INFO 6112 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-11-27 13:26:58.472  INFO 6112 --- [           main] com.example.TpExemplesApplication        : Started TpExemplesApplication in 12.837 seconds (JVM running for 13.267)
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.exemple.dao.EntityRepository<?>' available
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:348)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:335)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
	at com.example.TpExemplesApplication.main(TpExemplesApplication.java:17)
les tableaux sont ajoutés avec succès mais le problème d'insertion je ne sais pas comment le résoudre
Y-a-t il une modification ajouter à mon programme? et merci d'avance