findById()在Spring Boot和Jpa上不起作用

时间:2019-07-30 10:12:02

标签: java spring hibernate spring-boot jpa

我的主要课程是:

 package com.ashwin.jpafirst;

    import com.ashwin.jpafirst.model.Person;
    import com.ashwin.jpafirst.reposit.PersonJpaRepository;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication
    public class JpafirstApplication implements CommandLineRunner {

        private Logger logger= LoggerFactory.getLogger(this.getClass());

        @Autowired
        PersonJpaRepository personJpaRepository;

        public static void main(String[] args)

        {
            SpringApplication.run(JpafirstApplication.class, args);
        }

        @Override
        public void run(String... args) throws Exception {
            // TODO Auto-generated method stub

            logger.info("User id is ",personJpaRepository.findById(2));

        }

    }

Person.java

package com.ashwin.jpafirst.model;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="person")
public class Person {


        @Id
        @GeneratedValue
        private int id;

        @Column(name="name")
        private String name;
        private String location;
        private Date dateOfBirth;

        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getLocation() {
            return location;
        }
        public void setLocation(String location) {
            this.location = location;
        }
        public Date getDateOfBirth() {
            return dateOfBirth;
        }
        public void setDateOfBirth(Date dateOfBirth) {
            this.dateOfBirth = dateOfBirth;
        }
        public Person(int id, String name, String location, Date dateOfBirth) {

            this.id = id;
            this.name = name;
            this.location = location;
            this.dateOfBirth = dateOfBirth;
        }

        public Person() {

        }


    }

我的应用程序属性是:

## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url = jdbc:mysql://localhost:3306/jpaintro
spring.datasource.username = root
spring.datasource.password =


    ## Hibernate Properties
    # The SQL dialect makes Hibernate generate better SQL for the chosen database
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

    # Hibernate ddl auto (create, create-drop, validate, update)
    spring.jpa.hibernate.ddl-auto = update

PersonJpaRepository.java

package com.ashwin.jpafirst.reposit;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.ashwin.jpafirst.model.Person;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;


@Repository
@Transactional
public class PersonJpaRepository {

    //connects to Databse
    @PersistenceContext
    EntityManager entityManager;

    public Person findById(int id) {
        return entityManager.find(Person.class, id);
    }

}

我还将数据另存为:

enter image description here

但是当我尝试使用

通过ID接收Person对象时
logger.info("User id is ",personJpaRepository.findById(2));

我就是这样:

enter image description here

由于Person对象需要在此处打印,但是代码已成功编译,但是我没有获得有关此人员的信息。我的代码没有错误,但没有检索数据。为什么Person对象未在其中打印控制台?

0 个答案:

没有答案