surendra harikantra

Greenhorn
+ Follow
since Jan 13, 2009
Merit badge: grant badges
For More
Cows and Likes
Cows
Total received
0
In last 30 days
0
Total given
0
Likes
Total received
0
Received in last 30 days
0
Total given
0
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by surendra harikantra

it got resolved. I have added one parmeter called wsr id which was not required.
Hi I'm new to JPA with hibernate, I have tables with one-to-many relationship and Entity bean accordingly. When im trying to insert the record into the DB, it is throws an exception:
org.hibernate.PropertyValueException: not-null property references a null or transient value:

CREATE TABLE IF NOT EXISTS wsrdatabase.wsr
(
wsr_id integer(100) not null auto_increment,
employee_num varchar(100) not null,
from_date datetime not null,
to_date datetime not null,
status integer default 0 not null,
constraint primary key (wsr_id),
constraint foreign key (employee_num)
references wsrdatabase.employee(employee_num)
on update cascade
on delete cascade
);

CREATE TABLE IF NOT EXISTS wsrdatabase.tasks
(
task_id integer(75) not null auto_increment,
task_name varchar(75) not null,
task_details varchar(1000),
date datetime not null,
time_spent varchar(100) not null,
constraint primary key (task_id)
);

CREATE TABLE IF NOT EXISTS wsrdatabase.tasks_for_the_week
(
wsr_id integer(100) not null,
task_id integer(75) not null,
constraint primary key (wsr_id, task_id),
constraint unique key (task_id),
constraint foreign key (wsr_id)
references wsrdatabase.wsr(wsr_id),
constraint foreign key (task_id)
references wsrdatabase.tasks(task_id)
);

entity bean:
.
.
@Entity
@Table(name = "wsr")
public class WSR
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "wsr_id", nullable = false, unique = true)
private Long wsrId;

@Basic
@Column(name = "employee_num", nullable = false, unique = false)
private String employeeNum;

@Basic
@Column(name = "from_date", nullable = false, unique = false)
private Date fromDate;

@Basic
@Column(name = "to_date", nullable = false, unique = false)
private Date toDate;

@Basic
@Column(name = "status", nullable = false, unique = false)
private Integer status;

@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name = "tasks_for_the_week", joinColumns = {
@JoinColumn(name="wsr_id", unique = true)},
inverseJoinColumns = {@JoinColumn(name="task_id")})
private List<Task> tasks;
.
.
.

@Entity
@Table(name = "tasks")
public class Task
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "task_id", nullable = false, unique = true)
private Long taskId;

@Basic
@Column(name = "task_name", nullable = false, unique = true)
private String taskName;

@Basic
@Column(name = "wsr_id", nullable = false, unique = false)

private String wsrId;

@Basic
@Column(name = "task_details", nullable = true, unique = false)
private String taskDetails;

@Basic
@Column(name = "date", nullable = false, unique = false)
private Date date;

@Basic
@Column(name = "time_spent", nullable = false, unique = false)
private String timeSpent;

@ManyToOne(optional=true)
@JoinTable(name = "tasks_for_the_week", joinColumns = {
@JoinColumn(name="task_id") }, inverseJoinColumns = {
@JoinColumn(name="wsr_id") })
private WSR wsr;
.
.
.
main class

WSR wsr = new WSR();
Task t1 = new Task();
Task t2 = new Task();
wsr.setEmployeeNum( "131408" );
//wsr.setWsrId( new Long("123") );
wsr.setFromDate( new Date() );
wsr.setToDate( new Date() );
wsr.setStatus( new Integer("1") );
t1.setTaskDetails( "XYZ" );
t2.setTaskDetails( "ABC" );
t1.setTaskName("CR");
//t1.setTaskId( new Long ("1") );
//t2.setTaskId( new Long ("2") );
t2.setTaskName( "VTP" );
t1.setDate( new Date() );
t2.setDate( new Date() );
t1.setTimeSpent( "5.0" );
t2.setTimeSpent( "5.0" );
List<Task> a = new ArrayList<Task>();
a.add( t1 );
a.add( t2 );
wsr.setTasks( a );

LOG.info( "Inserting an wsr onject into DB" );
GeneralUtil.checkIfNull( wsr, "WSR " );
EntityManagerFactory entityManagerFactory = Persistence.
createEntityManagerFactory( Constants.PERSISTENCE_UNIT );
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
try
{
entityManager.merge( wsr );
entityTransaction.commit();
}
catch (EntityExistsException eee)
{
LOG.error( "The entity already exists" );
throw new WSRException( "The entity already exists", eee );
// entityTransaction.rollback();
}
catch (Exception e)
{
LOG.error( "Failed to insert into DB" );
throw new WSRException( e.getMessage(), e );
}
finally
{
LOG.debug( "Closing Entity Manager" );
entityManager.close();
}

im getting :
Hibernate: insert into wsr (employee_num, from_date, status, to_date) values (?, ?, ?, ?)
com.wipro.sms.automatedwsr.wsr.exception.WSRException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.wipro.sms.automatedwsr.wsr.model.Task.wsrId
at com.wipro.sms.automatedwsr.wsr.WSRServiceImpl.addWSR(WSRServiceImpl.java:46)
at com.wipro.sms.automatedwsr.wsr.WSRServiceTest.addWSR(WSRServiceTest.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)>>> org.hibernate.PropertyValueException: not-null property references a null or transient value: com.wipro.sms.automatedwsr.wsr.model.Task.wsrId

at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.wipro.sms.automatedwsr.wsr.model.Task.wsrId
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:244)
at com.wipro.sms.automatedwsr.wsr.WSRServiceImpl.addWSR(WSRServiceImpl.java:34)
... 17 more
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.wipro.sms.automatedwsr.wsr.model.Task.wsrId
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:95)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
at org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:43)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:238)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:714)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:696)
at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:268)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:319)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:265)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
at org.hibernate.engine.Cascade.cascade(Cascade.java:153)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:479)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:246)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:81)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:704)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:688)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:692)
at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:235)
... 18 more


please help me on this
Thanks a lot buddy it is working now. :lol:
Im using JPA with hibernate. Im able to insert record into db using JPA.
when im trying retrieve record from DB using NamedQuery, im getting javax.persistence.PersistenceException: [PersistenceUnit: wsrdatabase] Unable to build EntityManagerFactory
Am i missing something? please help me in that.
Entity bean:
@Entity
@Table(name = "employee")
@NamedQueries( {
@NamedQuery(name = "employee.findAll", query = "SELECT e FROM employee e"),
@NamedQuery(name = "employee.byId",
query = "SELECT e FROM employee e WHERE e.employeeNum = :empNum") })

public class Employee
{

@Id
@Column(name = "employeeNum", nullable = false, unique = true)
private String employeeNum;

@Basic
@Column(name = "firstName", nullable = false, unique = false)
private String firstName;
.
..
// class using entity bean
public List<Employee> searchAllEmployee() throws EmployeeException
{
EntityManagerFactory entityManagerFactory = Persistence.
createEntityManagerFactory( Constants.PERSISTENCE_UNIT );
EntityManager entityManager = entityManagerFactory.createEntityManager();
Query findAllQuery = entityManager.createNamedQuery("employee.findAll");
List<Employee> employees = findAllQuery.getResultList();
return employees;
}
//persistence.xml
<persistence-unit name="wsrdatabase">
<provider>org.hibernate.ejb.HibernatePersistence</provider>

<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/wsrdatabase" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

<property name="hibernate.connection.pool_size" value="6" />
<property name="hibernate.connection.autoReconnect" value="true" />
<property name="hibernate.generate_statistics" value="false" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.use_sql_comments" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>



Full stack trace of exception that occured:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
[PersistenceUnit: wsrdatabase] Unable to build EntityManagerFactory
javax.persistence.PersistenceException: [PersistenceUnit: wsrdatabase] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at com.wipro.sms.wsr.employee.EmployeeServiceImpl.searchAllEmployee(EmployeeServiceImpl.java:122)
at com.wipro.sms.wsr.employee.EmployeeServiceTest.testSearchAllEmployee(EmployeeServiceTest.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.hibernate.HibernateException: Errors in named queries: employee.findAll, employee.byId
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:397)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 21 more