Iniciando no Hibernate

Pessoal, estou com problema ao rodar o código à seguir:

package hibernate;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = “USER”)
public class User implements Serializable {
@Id
@GeneratedValue
@Column(name = “USER_ID”)
private Long id;
public Long getId() {
return id;
}

public void setId(Long id) {
	this.id = id;
} 

@OneToOne(optional=true, cascade = CascadeType.ALL)
@JoinTable(name="UserAddress", joinColumns={
		@JoinColumn(name="USER_ID", unique=true)
}, inverseJoinColumns = {
		@JoinColumn(name="addressId")
})
private Address shippingAddress;

public Address getShippingAddress() {
	return shippingAddress;
}

public void setShippingAddress(Address shippingAddress) {
	this.shippingAddress = shippingAddress;
}

}

package hibernate;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = “ADDRESS”)

public class Address implements Serializable {
@Id
@GeneratedValue
@Column(name = “ADDRESS_ID”)
private Long id;
private String street;
private String city;
private String zipcode;
@OneToOne(optional=true, mappedBy=“shippingAddress”)
private User user;

public User getUser() {
	return user;
}

public void setUser(User user) {
	this.user = user;
}
 
public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public String getStreet() {
	return street;
}

public void setStreet(String street) {
	this.street = street;
}

public String getCity() {
	return city;
}

public void setCity(String city) {
	this.city = city;
}

public String getZipcode() {
	return zipcode;
}

public void setZipcode(String zipcode) {
	this.zipcode = zipcode;
}

}

package hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class Example1 {
public static void main(String[] args) throws Exception {
/** Getting the Session Factory and session /
SessionFactory session = HibernateUtil.getSessionFactory();
Session sess = session.getCurrentSession();
/
* Starting the Transaction /
Transaction tx = sess.beginTransaction();
/
* Creating Pojo /
User newUser = new User();
//newUser.setId(1L);
Address shippingAddress = new Address();
newUser.setShippingAddress(shippingAddress);
shippingAddress.setUser(newUser);
/
* Saving POJO /
sess.saveOrUpdate(newUser);
/
* Commiting the changes */

	tx.commit();
	System.out.println("Record Inserted");
	/** Closing Session */
	

	
	session.close();
}

}

O erro lançado é:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread “main” org.hibernate.PropertyValueException: not-null property references a null or transient value: hibernate.Address.user
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.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:241)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:292)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:240)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:193)
at org.hibernate.engine.Cascade.cascade(Cascade.java:154)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:454)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:523)
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 org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
at $Proxy11.saveOrUpdate(Unknown Source)
at hibernate.Example1.main(Example1.java:21)

ALGUÉM PODE ME AJUDAR!!!

Olá bom dia,

Vc deve estar passando algum objeto nulo, e que no banco de dados deve ser NOTNULL dá uma olhadinha!!
Faça um debug e veja se não existe algum objeto nulo na classe ‘Andress’.

E configura o ‘property’ do log4j para não dar mais esta mensagem:

[color=red]og4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly. [/color]

Boa sorte!!!

Acho que não tem nada nulo, como pode ser visto aqui:

User newUser = new User();
Address shippingAddress = new Address();
newUser.setShippingAddress(shippingAddress);
shippingAddress.setUser(newUser);
sess.saveOrUpdate(newUser);

não basta passar somente a instância, tem que setar a chave primária (algo como user.setCodigo(codigo)) na classe User…

Tentar deixar o Objeto Estanciado dentro da classe ENTiTY

private Address shippingAddress = new Address();

public Address getShippingAddress() {
return shippingAddress;

Vou tentar, mas, acho que não, pois na classe User foi definido o padrão de chave-primária com a anotação:

@Id
@GeneratedValue
@Column(name = “USER_ID”)

que pode default é AUTO. Ainda assim é preciso eu definir previamente a chave? Eu acho que não…

[quote=dayserivera]Vou tentar, mas, acho que não, pois na classe User foi definido o padrão de chave-primária com a anotação:

@Id
@GeneratedValue
@Column(name = “USER_ID”)

que pode default é AUTO. Ainda assim é preciso eu definir previamente a chave? Eu acho que não…[/quote]

ok, é um novo usuário.

o mesmo vale para classe Address, tem que popular a pk