Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Error creating bean with name 'entityManagerFactory' defined in class path resource

Após a colocação das anotações do JPA, o Hibernate lançou uma exceção como se não reconhecesse a entidade:

Invocation of init method failed; nested exception is org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.alura.forum.model.Resposta.mensagem references an unknown entity: java.lang.String

@Entity
public class Resposta {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    private String mensagem;
    private Topico topico;
    private LocalDateTime dataCriacao = LocalDateTime.now();

    @ManyToOne
    private Usuario autor;
    private Boolean solucao = false;
application.properties

server.port = 8090

# data source
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:alura-forum
spring.datasource.username=sa
spring.datasource.password=

# jpa
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

# h2
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

pom.xml

    <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.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
4 respostas

Oi Flavio

Você colocou a anotação @ManyToOne em uma String, está errado:

    @ManyToOne
    private String mensagem;

Opa, obrigado Otávio.

Por curiosidade, porque não posso anotar numa String?

solução!

Oi Flavio,

As anotações @ManyToOne, @OneToMany e @ManyToMany somente podem ser utilizadas am atributos que sejam outras entidades. Não se deve utilizar em atributos String, int, long, etc.

Bons estudos!

Obrigado.