2016-11-07 6 views
1

Я пытаюсь использовать простую кодировку с помощью springboot, используя @PersistenceContext в entitymanager, для создания объекта в mysql, но я получаю, что мой объект entitymanager имеет значение null и не уверен, почему , потому что метод, который использует entitymanager, имеет аннотацию @transaction.Null EntityManager, использующий @PersistenceContext

Заранее благодарен!

Это мой код, когда я вызываю метод для вставки данных:

import org.hibernate.service.spi.ServiceException; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 
import org.springframework.transaction.annotation.Transactional; 

@Component 
public class VehicleService implements IVehicleService { 

    @Autowired 
    IFileService fileService; 

    @Transactional 
    public void addVehicle(Vehicle vehicle) throws ServiceException{ 
     Vehicle vehicleNew = new Vehicle(); 
     vehicleNew.setName(vehicle.getName()); 
     vehicleNew.setType(vehicle.getType()); 
     vehicleNew.setEnrollment(vehicle.getEnrollment()); 
     try{ 
      fileService.createVehicle(vehicle); 
     }catch(Exception e){ 

     } 
    } 
} 

import org.hibernate.service.spi.ServiceException; 
import org.springframework.transaction.annotation.Transactional; 

public interface IFileService { 

    @Transactional 
    void createVehicle(Vehicle vehicle) throws ServiceException; 

} 

Вот где я называю EntityManager и всегда равна нулю:

import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

import org.springframework.stereotype.Component; 

@Component 
public class FileService implements IFileService{ 

    @PersistenceContext 
    protected EntityManager entityManager; 

    public void createVehicle(Vehicle vehicle) { 
      System.out.println("Inserting........................"); 
      entityManager.persist(vehicle); 
      System.out.println("Inserted!"); 
      return; 
    } 
} 

hibernate.cfg.xml

<hibernate-configuration> 
<session-factory name="hibernateSessionFactory"> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.password">global</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost/testDB</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.format_sql">true</property> 
<!-- <property name="hibernate.hbm2ddl.auto">create</property> --> 
    <mapping class="com.org.testing.Vehicle"/> 
</session-factory> 
</hibernate-configuration> 
+0

Можете ли вы показать файл application.propreties? –

+0

обновил мой вопрос! –

ответ

5

Я думаю, что в вашем случае вы должны работать с сеансом hibernate f actory и зимуют сессии вместо менеджера сущностей, если вы хотите работать с менеджером объекта просто перейдите к application.properties в файле ресурсов и добавьте:

spring.datasource.url = jdbc:mysql://localhost:3306/testDB 
# Username and password 
spring.datasource.username = root 
spring.datasource.password = global 
# Show or not log for each sql query 
spring.jpa.show-sql = true 
spring.jpa.hibernate.ddl-auto = update 
# Naming strategy 
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 
# Allows Hibernate to generate SQL optimized for a particular DBMS 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

не забудьте для добавления зависимости spring jpa в вашем pom.xml

Смежные вопросы