| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/04/2009 20:28:58
|
nandobgi
Java Ninja
![[Avatar]](/images/avatar/45ab12afa05e563bb484781693dffc87.jpg)
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
|
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/04/2009 22:28:08
|
Rafael Carneiro
Moderador
![[Avatar]](/images/avatar/895df6a24c45297cb239065bcafa1fa4.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2009 00:12:15
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2009 06:41:39
|
nandobgi
Java Ninja
![[Avatar]](/images/avatar/45ab12afa05e563bb484781693dffc87.jpg)
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
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2009 07:35:16
|
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"/>
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2009 12:53:39
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
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/ |
|
|
 |
|
|