Announcement Announcement Module
Collapse
No announcement yet.
JPA persist() method: IllegalArgumentException Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • JPA persist() method: IllegalArgumentException

    Hello
    I`ve been already searching this forum and also studying reference manual, but I still don`t know how to solve this problem.

    I`m using Spirng 2.5.6, TopLink, database IBM DB2 and using JPA as persistence manager. This all runs on Tomcat 6. I haven`t add any configuration classes there, bcs I have a mess in my head what class belogns where. I`ve been sitting all day long on this, so please help if you can

    My dispatcher-servlet.xml:

    Code:
    <?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.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    
        <bean id="controllermap" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <prop key="/browse.ucm">browseController</prop>
                    <prop key="/add.ucm">addController</prop>
                </props>
            </property>
        </bean>
    
        <context:component-scan base-package="net.chrenko.marek.pa165.ucm" />
    
        <bean id="browseController" class="net.chrenko.marek.pa165.ucm.BrowseController">
               <property name="contactService">
                   <ref bean="contactService" />
               </property>
        </bean>
    
         <bean id="addController" class="net.chrenko.marek.pa165.ucm.AddController">
               <property name="contactService">
                   <ref bean="contactService" />
               </property>
        </bean>
    
        <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <bean id="contactService" class="net.chrenko.marek.pa165.ucm.ContactDAO">
            <property name="entityManagerFactory" ref="entityManagerFactory" />
        </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="true"/>
                <property name="databasePlatform" value="oracle.toplink.essentials.platform.database.DB2Platform"/>
            </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.ibm.db2.jcc.DB2Driver" />
        <property name="url" value="jdbc:db2://127.0.0.1:50000/ucm"/>
        <property name="username" value="ADMINISTRATOR"/>
        <property name="password" value="passwordofcourse"/>
    </bean>
    
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory"/>
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
    		<property name="transactionManager" ref="transactionManager"/>
    		<property name="transactionAttributes">
    			<props>
    				<prop key="save*">PROPAGATION_REQUIRED</prop>
    				<prop key="update*">PROPAGATION_REQUIRED</prop>
    				<prop key="delete*">PROPAGATION_REQUIRED</prop>
    			</props>
    		</property>
    	</bean>
    
    	<bean id="dbService" parent="baseTransactionProxy">
    		<property name="target">
    			<bean class="net.chrenko.marek.pa165.ucm.ContactDAO">
    				<property name="entityManagerFactory" ref="entityManagerFactory"/>
    			</bean>
    		</property>
    	</bean>
    
    </beans>
    And ContactDAO:
    Code:
    package net.chrenko.marek.pa165.ucm;
    
    import org.springframework.orm.jpa.support.JpaDaoSupport;
    import org.springframework.transaction.annotation.Transactional;
    
    import java.util.List;
    
    /**
     * Created by IntelliJ IDEA.
     * User: Marek Chrenko
     * Date: 21.11.2009
     * Time: 16:59:59
     * Implementation of Contact Service using interface + Java Persistence API DAO template
     */
    public class ContactDAO extends JpaDaoSupport implements ContactService {
        public Contact save(Contact contact) {
            getJpaTemplate().persist(contact);
            return contact;
        }
    
        public Contact update(Contact contact) {
            return getJpaTemplate().merge(contact);
        }
    
        public void delete(Contact contact) {
            getJpaTemplate().remove(contact);
        }
    
        public List<Contact> findAllContacts() {
            return  getJpaTemplate().find("select c from Contact c");
        }
    
        public List<Contact> findContactName(String name) {
            return getJpaTemplate().find("select c from Contact c where c.name=?1",name);
        }
    
        public List<Contact> findContactSurname(String surname) {
            return getJpaTemplate().find("select c from Contact c where c.surname=?1",surname);
        }
    
        public List<Contact> findContactEmail(String email) {
            return getJpaTemplate().find("select c from Contact c where c.email=?1",email);
        }
    
        public List<Contact> findContactPhone(String phone) {
            return getJpaTemplate().find("select c from Contact c where c.phoneNumber.number=?1",phone);
        }
    }
    When testing or reading DB, everything is OK, when trying to insert or update, an IllegalArgumentException occurres.
    I`ve already add baseTransactionProxy, but as I`ve already written - there is one big mess in my head Please help, thanks in advance
Working...
X