Hello,
I have struggled with this for a few hours and hopefully someone can
see what I am doing wrong.

Basically, I insert into users, I then select the user, I then set
that in my address and try to insert and get an error that the user_id
cannot be null, but it has a value.

I am including the two entities involved at the bottom, and the part
of the test that is executed. The last line in the test is where the
error is thrown.


Hibernate: insert into users (firstName, lastName, username, id)
values (?, ?, ?, ?)
Hibernate: select user0_.id as id105_, user0_.firstName as
firstName105_, user0_.lastName as lastName105_, user0_.username as
username105_ from users user0_ where user0_.username=?
Found User /* loaded from the database */
id: 11403264
firstName: Test lastName: User
username: testuser_resume

Address being persisted /*, user.id has a value */:
id: 0
addressLineOne: Some street address
user:
    id: 11403264
    firstName: Test lastName: User
    username: testuser_resume
Hibernate: insert into address (addressLineOne, city, state, user_fk,
zipCode, id) values (?, ?, ?, ?, ?, ?)
13800 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL
Error: 20000, SQLState: 23502
13800 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Column
'USER_ID'  cannot accept a NULL value.
13800 [main] ERROR
org.hibernate.event.def.AbstractFlushingEventListener - Could not
synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not
insert: [jblack.resumeapp.lift.model.Address]
        at org.hibernate.exception.SQLStateConverter.convert
(SQLStateConverter.java:94)
        at org.hibernate.exception.JDBCExceptionHelper.convert
(JDBCExceptionHelper.java:66)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert
(AbstractEntityPersister.java:2295)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert
(AbstractEntityPersister.java:2688)
        at org.hibernate.action.EntityInsertAction.execute
(EntityInsertAction.java:79)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:
263)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:
167)
        at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions
(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush
(DefaultFlushEventListener.java:50)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
        at org.hibernate.transaction.JDBCTransaction.commit
(JDBCTransaction.java:137)
        at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
        at jblack.resumeapp.lift.model.TestJPAWeb.save_resume
(TestJPAWeb.scala:76)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall
(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run
(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively
(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate
(InvokeMethod.java:20)
        at org.junit.internal.runners.statements.RunBefores.evaluate
(RunBefores.java:28)
        at org.junit.internal.runners.statements.RunAfters.evaluate
(RunAfters.java:31)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild
(BlockJUnit4ClassRunner.java:73)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild
(BlockJUnit4ClassRunner.java:46)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
        at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
        at org.junit.internal.runners.statements.RunBefores.evaluate
(RunBefores.java:28)
        at org.junit.internal.runners.statements.RunAfters.evaluate
(RunAfters.java:31)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute
(JUnit4TestSet.java:62)
        at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet
(AbstractDirectoryTestSuite.java:140)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute
(AbstractDirectoryTestSuite.java:127)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess
(SurefireBooter.java:345)
        at org.apache.maven.surefire.booter.SurefireBooter.main
(SurefireBooter.java:1009)
Caused by: java.sql.SQLIntegrityConstraintViolationException: Column
'USER_ID'  cannot accept a NULL value.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException
(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
        at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException
(Unknown Source)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException
(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
Source)
        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement
(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate
(Unknown Source)
        at org.hibernate.jdbc.NonBatchingBatcher.addToBatch
(NonBatchingBatcher.java:46)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert
(AbstractEntityPersister.java:2275)
        ... 40 more
Caused by: java.sql.SQLException: Column 'USER_ID'  cannot accept a
NULL value.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException
(Unknown Source)
        at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA
(Unknown Source)
        ... 51 more
Caused by: ERROR 23502: Column 'USER_ID'  cannot accept a NULL value.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
        at org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeRow
(Unknown Source)
        at org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore
(Unknown Source)
        at org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore
(Unknown Source)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown
Source)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
        ... 45 more


@Entity
@Table{val name = "address"}
class Address {
  @Id
  @GeneratedValue(){val strategy = GenerationType.AUTO}
  var id : Long = _

  @Column{val nullable = false, val length=80}
  var addressLineOne : String = ""
  @Column{val nullable = false, val length=32}
  var city : String = ""
  @Column{val nullable = false, val length=2}
  var state : String = ""
  @Column{val nullable = false, val length=10}
  var zipCode : String = ""

  @OneToOne{val fetch = FetchType.EAGER, val cascade=Array
(CascadeType.PERSIST, CascadeType.REMOVE)}
  @JoinColumn{val name = "user_fk", val nullable = false}
  var user : User = _

  override def toString = "id: " + id + "\naddressLineOne: " +
addressLineOne + "\nuser: " + user
}


@Entity
@Table{val name="users"}
class User {
  @Id
  @GeneratedValue(){val strategy = GenerationType.AUTO}
  var id : Int = _

  @Column{val nullable = false, val length=32}
  var firstName : String = ""
  var lastName : String = ""

  @Column{val nullable = false, val unique = true, val length = 20}
  var username : String = ""

  override def toString = "id: " + id + "\nfirstName: " + firstName +
" lastName: " + lastName + "\nusername: " + username
}


  @Test
  def save_resume() = {
        var em = emf.createEntityManager()
        var tx = em.getTransaction()
        tx.begin()
        val user = new User
        user.username = "testuser_resume"
        user.firstName = "Test"
        user.lastName  = "User"
        em.persist(user)
        tx.commit()
        val retrieved_user = em.createNamedQuery
("findUserByUsername").setParameter("username",
user.username ).getSingleResult.asInstanceOf[User]
    println("Found User\n" + retrieved_user)

        tx = em.getTransaction()
        tx.begin()
        val address = new Address
        address.addressLineOne = "Some street address"
        address.city = "Knoxville"
        address.state = "TN"
        address.zipCode  = "379xx"
        address.user  = retrieved_user
        println("Address being persisted:\n" + address)
        em.persist(address)
        tx.commit()

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.


Reply via email to