Pesssoal,
to tentando mostrar um hello world em uma pagina web a partir de uma base MySQL.
Só que dá a seguinte excessão:
[code]org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity bean class: class br.com.rodrigomelo.melofogolin.domain.Imposto, please verify that this class has been marked with the @Entity annotation.; nested exception is java.lang.IllegalArgumentException: Unknown entity bean class: class br.com.rodrigomelo.melofogolin.domain.Imposto, please verify that this class has been marked with the @Entity annotation.
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
root cause
org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity bean class: class br.com.rodrigomelo.melofogolin.domain.Imposto, please verify that this class has been marked with the @Entity annotation.; nested exception is java.lang.IllegalArgumentException: Unknown entity bean class: class br.com.rodrigomelo.melofogolin.domain.Imposto, please verify that this class has been marked with the @Entity annotation.
org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:229)
org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:114)
org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:212)
org.springframework.orm.jpa.JpaAccessor.translateIfNecessary(JpaAccessor.java:152)
org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:190)
org.springframework.orm.jpa.JpaTemplate.find(JpaTemplate.java:221)
br.com.rodrigomelo.melofogolin.dao.JpaImpostoDao.findById(JpaImpostoDao.java:12)
br.com.rodrigomelo.melofogolin.controller.ImpostoController.handleRequestInternal(ImpostoController.java:26)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
root cause
java.lang.IllegalArgumentException: Unknown entity bean class: class br.com.rodrigomelo.melofogolin.domain.Imposto, please verify that this class has been marked with the @Entity annotation.
oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.findInternal(EntityManagerImpl.java:291)
oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.find(EntityManagerImpl.java:133)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:341)
$Proxy7.find(Unknown Source)
org.springframework.orm.jpa.JpaTemplate$1.doInJpa(JpaTemplate.java:223)
org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:185)
org.springframework.orm.jpa.JpaTemplate.find(JpaTemplate.java:221)
br.com.rodrigomelo.melofogolin.dao.JpaImpostoDao.findById(JpaImpostoDao.java:12)
br.com.rodrigomelo.melofogolin.controller.ImpostoController.handleRequestInternal(ImpostoController.java:26)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
[/code]
Eu tenho uma classe jUnit que roda legal. O problema dá quando eu tento acessar o dao direto no controller.
A seguir meus fontes:
[code]package br.com.rodrigomelo.melofogolin.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity(name = “impostos”)
public class Imposto {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String nome;
private String acronimo;
private float aliquota;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getAcronimo() {
return acronimo;
}
public void setAcronimo(String acronimo) {
this.acronimo = acronimo;
}
public float getAliquota() {
return aliquota;
}
public void setAliquota(float aliquota) {
this.aliquota = aliquota;
}
}
[code]package br.com.rodrigomelo.melofogolin.dao;
import java.util.List;
import br.com.rodrigomelo.melofogolin.domain.Imposto;
public interface ImpostoDao {
public Imposto findById(long id);
public List<Imposto> findByAcronimo(String acronimo);
public void save(Imposto imposto);
public Imposto update(Imposto imposto);
public void delete(Imposto imposto);
}[/code]
[code]package br.com.rodrigomelo.melofogolin.dao;
import java.util.List;
import org.springframework.orm.jpa.support.JpaDaoSupport;
import br.com.rodrigomelo.melofogolin.domain.Imposto;
public class JpaImpostoDao extends JpaDaoSupport implements ImpostoDao {
public Imposto findById(long id) {
return getJpaTemplate().find(Imposto.class, id);
}
public List<Imposto> findByAcronimo(String acronimo) {
return getJpaTemplate().find("select i from impostos i where i.acronimo = ?1", acronimo);
}
public void save(Imposto imposto) {
getJpaTemplate().persist(imposto);
}
public Imposto update(Imposto imposto) {
return getJpaTemplate().merge(imposto);
}
public void delete(Imposto imposto) {
getJpaTemplate().remove(imposto);
}
}[/code]
[code]package br.com.rodrigomelo.melofogolin.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import br.com.rodrigomelo.melofogolin.dao.ImpostoDao;
import br.com.rodrigomelo.melofogolin.domain.Imposto;
public class ImpostoController extends AbstractController {
private ImpostoDao impostoDao;
public ImpostoDao getImpostoDao() {
return impostoDao;
}
public void setImpostoDao(ImpostoDao impostoDao) {
this.impostoDao = impostoDao;
}
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception {
Imposto imposto = impostoDao.findById(1);
return new ModelAndView("impostos.jsp", "acronimo", imposto.getAcronimo());
}
}
Página web:
<p class="ie-last-child"><c:out value="${acronimo}"/></p>
Configuracao:
web.xml
[code]<?xml version="1.0" encoding="UTF-8"?>
melofogolin
home.jsp
<!-- SiteMesh -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring -->
<servlet>
<servlet-name>melofogolin</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>melofogolin</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
[/code]
[app]-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="HelloController"
class="br.com.rodrigomelo.melofogolin.controller.HelloController"
name="/hello.html" />
<bean id="ImpostoController"
class="br.com.rodrigomelo.melofogolin.controller.ImpostoController"
name="/impostos.html">
<property name="impostoDao" ref="impostoDao" />
</bean>
</beans>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="impostoDao" class="br.com.rodrigomelo.melofogolin.dao.JpaImpostoDao">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.TopLinkJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
<property name="databasePlatform"
value="oracle.toplink.essentials.platform.database.MySQL4Platform" />
</bean>
</property>
<property name="loadTimeWeaver">
<bean
class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/melofogolin" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
</beans>
classpath:br/com/rodrigomelo/melofogolin/META-INF/persistence.xml (Eu queria colocar ele na pasta resources, mas nao funciona)
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<persistence-unit name="MeloFogolin" transaction-type="RESOURCE_LOCAL" />
</persistence>
E por fim, o meu pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rodrigomelo.melofogolin</groupId>
<artifactId>melofogolin</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!--
<dependency> <groupId>org.acegisecurity</groupId>
<artifactId>acegi-security</artifactId> <version>1.0.7</version>
</dependency>
-->
<!--
<dependency> <groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId> <version>1.2_02</version>
</dependency> <dependency> <groupId>javax.faces</groupId>
<artifactId>jsf-impl</artifactId> <version>1.2-b19</version>
</dependency>
-->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<!--
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId>
<version>1.2.9</version> </dependency>
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jpa</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
</project>
Alguem sabe o que tah acontecendo ?
Obrigado!!