EntityManager persist () не сохраняет объекты в Oracle - PullRequest
0 голосов
/ 05 июня 2019

Использование Spring, Hibernate и JPA для сохранения объектов сотрудников в Oracle 12c. При запуске SpringDataSiebel «main» не получают никаких ошибок, но фактически не сохраняются в базу данных.

<context:component-scan base-package="employee"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@...."/>
    <property name="username" value="username"/>
    <property name="password" value="password"/>
</bean>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="jcgPersistence"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="persistenceXmlLocation" value="META-INF/persistence.xml"/>
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
    <property name="jpaDialect" ref="jpaDialect"/>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">validate</prop>
            <!--prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop-->
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
        </props>
    </property>
</bean>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaDialect" ref="jpaDialect"/>
</bean>

открытый класс SpringDataSiebel {

public SpringDataSiebel() {
super();
}

public static void main(String[] args) {
//SpringDataSiebel s = new SpringDataSiebel();

try {
ApplicationContext context = new ClassPathXmlApplicationContext("META-INF\\spring-config-siebel.xml");

//Fetch the DAO from Spring Bean Factory
EmployeeDao employeeDao = (EmployeeDao) context.getBean("EmployeeDaoImpl");
Employee employee = new Employee("Employee 320");
int id = 330;
employee.setEmployeeId(id);

//Save an employee Object using the configured Data source
employeeDao.save(employee);
System.out.println("Employee Saved with EmployeeId " + employee.getEmployeeId());

//find an object using Primary Key
Employee emp = employeeDao.findByPrimaryKey(employee.getEmployeeId());
System.out.println("Found: " + emp);

Employee emp2 = employeeDao.findByPrimaryKey(1000);
System.out.println("Found: " + emp2);

//Close the ApplicationContext
((ConfigurableApplicationContext) context).close();

} catch (BeansException | SQLException e) {
e.printStackTrace();
}

} }

public class EmployeeDaoImpl implements EmployeeDao {
    public EmployeeDaoImpl() {
        super();
    }

    @PersistenceContext
    private EntityManager entityManager;

    //@Override
    @Transactional
    public void save(Employee employee) {

        try {
        //if (!entityManager.contains(employee)) {
            // persist object - add to entity manager
            entityManager.persist(employee);
            System.out.println("Saving the employee object...");

        //}

        } catch (Exception ex)        {
            System.out.println("Something went wrong.");
            ex.printStackTrace();
        }            
    }

}

Выход:

Сохранение объекта сотрудника ... Сотрудник сохранен с EmployeeId 330 Найдено: ноль Найдено: ноль Процесс завершен с кодом выхода 0.

Я ожидаю, что найдет объект "EmployeeId 330"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...