Hibernate campo calculado  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
nandobgi
Java Ninja
[Avatar]

Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline

Boa noite pessoal,

Quebrei a cabeça o dia todo para trabalhar com campos calculados e hibernate, bem o que estou tentando fazer é calcular o valor total de um item de pedido. Ex: quantidade * valor_unitario = valor_total.
Como eu estou buscando os dados a partir de uma view no meu BD tentei calcular o valor na mesma, criei um campo na minha classe Entity anotei com @Transient mas também não funcionou.

Como os amigos fazem nas suas aplicações?

Grato pessoal.

[ ]'s


[MSN]
Rafael Carneiro
Moderador
[Avatar]

Membro desde: 31/03/2007 12:40:41
Mensagens: 809
Localização: Fortaleza
Offline

Como você está preenchendo a sua entidade?

Rafael Carneiro
http://www.rafaelcarneiro.com | @rcarneiro | JForum
[WWW] [MSN]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

nandobgi wrote:Boa noite pessoal,

Quebrei a cabeça o dia todo para trabalhar com campos calculados e hibernate, bem o que estou tentando fazer é calcular o valor total de um item de pedido. Ex: quantidade * valor_unitario = valor_total.
Como eu estou buscando os dados a partir de uma view no meu BD tentei calcular o valor na mesma, criei um campo na minha classe Entity anotei com @Transient mas também não funcionou.

Como os amigos fazem nas suas aplicações?

Grato pessoal.

[ ]'s


o que vc ker fazer ? apenas calcular ??



c vc ker mais, quer que quando um registro for inserido haja um calculo para um campo, ou quando um registro for atualizado... então seria assim



Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
nandobgi
Java Ninja
[Avatar]

Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline


c vc ker mais, quer que quando um registro for inserido haja um calculo para um campo, ou quando um registro for atualizado... então seria assim

view plaincopy to clipboardprint?
public class SuaEntity implements Serializable {

private @Column(nome="valor_total") Double valorTotal;

public Double getValorTotal() { return valorTotal; }

//ja que é um calculo, não precisa de acesso publico
protected void setValorTotal(Double valorTotal) { this.valorTotal = valorTotal; }

//... outras propriedades e método persistentes


//esse método pode ter qualquer nome, desde q tenha as anotações
private @PrePersist @PreUpdate void trigger() {
setValorTotal(getQuantidade()*getValorUnitario());
}
}


O problema é que estou utilizando Session do Hibernate para persistencia e essas anotações só funcionam com EntityManager.

Valeu



[MSN]
roger_rf
GUJ Master

Membro desde: 29/04/2009 07:40:19
Mensagens: 1091
Localização: Natal/RN
Offline

Eu prefiro usar arquivos de mapeamento em vez de anotações, faço o seguinte para definir campos calculados:

<property formula="DATA_ULTIMO_EVENTO + DIAS_ENTRE_EVENTOS" name="dataProximoEvento" type="timestamp"/>

Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

nandobgi wrote:
O problema é que estou utilizando Session do Hibernate para persistencia e essas anotações só funcionam com EntityManager.

Valeu


não é verdade ^^ ... funciona com session tb... so configurar ^^ ...

e mais, EntityManager do Hiberante é apenas um adaptador para uma Session... tanto que vc pode fazer o seguinte

Session session = ((HiberanteEntityManager)entityManager).getSession();

e depois trabalhar diretamente com a session....

da uma olhada nessa classe que eu tenho... que esta logo abaixo... essa classe carrega a partir de uma EntityManagerFactory, e configura automáticamente para as anotações como @PrePersist funcionarem... e vc pode muito bem trabalhar apenas com sessions... usando

Session s = EntityUtils.getNewSession();

Obs.: vc precisa alterar o nome de "Sua_PU" para o adequado ao seu projeto




Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team