Update Hibernate

0 respostas
fabianofrizzo

Boa Trade Galera.

Seguinte to com um probleminha :D

Tenho as Seguintes Classes

package entity;

/*
* Import's
*/


@Entity
@Table(name = "tbPessoa", schema = "public")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "pesTipo", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue(value = "pessoa")
public class Pessoa implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "genPessoa", sequenceName = "genPessoa", initialValue = 1)
	@GeneratedValue(generator = "genPessoa", strategy = GenerationType.AUTO)
	private Integer pesCod;
	private String pesNome;
	private String pesNomeReduzido;
	private String pesFone;
	private String pesFax;
	private String pesCel;
	private Boolean pesCliente;
	private Boolean pesFornecedor;
        private Boolean pesAtivo;

	@OneToOne(mappedBy="pessoa")
	@Cascade(CascadeType.ALL)
	private Endereco endereco;
	
	@OneToMany(cascade={javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REMOVE})
	@Cascade({org.hibernate.annotations.CascadeType.PERSIST,org.hibernate.annotations.CascadeType.DELETE})
	@JoinColumn(name="pesCod_fk")
	private List<ContaReceber> contasReceber;

	public Pessoa() {
		// TODO Auto-generated constructor stub
	}
}
package entity;

/*
* Import's
*/

@Entity
@Table(name="tbContasReceber", schema="public")
public class ContaReceber implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name="genCr", sequenceName="genCr", initialValue=1)
	@GeneratedValue(generator="genCr", strategy=GenerationType.AUTO)
	private Integer crCod;
	
	@ManyToOne
	@JoinColumn(name="pesCod_fk", referencedColumnName="pesCod", nullable= false)
	private	Pessoa pessoa;
	
	@ManyToOne
	@JoinColumn(name="sitCod_fk", referencedColumnName="sitCod", nullable=false)
	private Situacao situacao;
	
	private BigDecimal crValor;
	private BigDecimal crJuros;
	private BigDecimal crTotal;
	private BigDecimal crValorRecebido;
	
	@Temporal(TemporalType.DATE)
	private Date crDataVencimento;
	@Temporal(TemporalType.DATE)
	private Date crDataRecebimento;
	@Temporal(TemporalType.DATE)
	private Date crDataEmissao;
	
	public ContaReceber() {
	}
}

O problema é o seguinte Trabalho com Flex, Mentawai e Hibernate
Muitos ja devem saber que o Flez tem um grande problema quando a Lazy..
Para me poupar disso carrego sómento os dados que eu preciso... E agora surjiu outro problema..

Seguinte

Tenho a tela de cadastro de Pessoa Até ai blza carrego só os campos pertinententes a Pessoa usando
Criteria..

O Problema é quando preciso altera algum dado de uma pessoa...

Como só busquei as informações de Pessoa o List não foi carregado.. E quando eu faço o seguinte

session.update(pessoa);

Ele da o Seguinte erro

17:54:24,875 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
17:54:24,875 ERROR [JDBCExceptionReporter] Entrada em lote 0 update public.tbContasReceber set pesCod_fk=null where pesCod_fk=1 foi abortada. Chame getNextException para ver a causa.
17:54:24,875 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: 23502
17:54:24,875 ERROR [JDBCExceptionReporter] ERROR: null value in column "pescod_fk" violates not-null constraint
17:54:24,875 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Dizendo que pesCod_fk não pode ser null e não pode mesmo :D

O Problema é que o hiberante ao invés de fazer update sómente na Pessoa ele atualiza todas as classes filias sem precisar..
Tem algum meio de fazer atualizar só a Pessoa

Criado 26 de janeiro de 2009
Respostas 0
Participantes 1