Ae pessoal eu uso EntityBean aqui, e preciso fazer algo para incrementar um valor:
ex.:
**
* @ejb.bean type="CMP"
* name="UidGen"
* local-jndi-name="ejb/uidgen/UidGenLocal"
* view-type="local"
* primkey-field="name"
* @ejb.util generate="physical"
* @ejb.pk
* @ejb.value-object
* @ejb.persistence table-name="UidGen"
* @ejb.finder signature="UidGenLocal findByName(java.lang.String name)"
* query="SELECT OBJECT(c) FROM UidGen AS c WHERE c.name=?1"
*/
public abstract class UidGenBean implements EntityBean {
... metodos
eu uso esse EntityBean ae para incrementar os valores de “outras” tabelas, tipo
/**
* @ejb.interface-method
*/
public static int nextValue(String name) throws CreateException, NamingException {
UidGenLocalHome h=null;
UidGenLocal l=null;
try {
h = UidGenUtil.getLocalHome();
l = h.findByName(name);
} catch(FinderException e) {
l=h.create(name);
}
return l.nextValue();
}
/**
* @ejb.interface-method
*/
public int nextValue() {
int value = getValue();
setValue(value + 1);
return value;
}
A minha dúvida é a seguinte, para eu acrescentar esse valor eu faço um
h = UidGenUtil.getLocalHome();
l = h.findByName(name);
entao, no h.findByName(String) é onde eu pego o valor que eu quero acrescentar, o findByName foi declarado la no cabeçalho:
* @ejb.finder signature="UidGenLocal findByName(java.lang.String name)"
* query="SELECT OBJECT(c) FROM UidGen AS c WHERE c.name=?1"
O que eu desejo é faze algo como é feito com um SELECT … FOR UPDATE por exemplo, eu pego esse valor ja na mesma transação o atualizo.
Por que da forma que eu to fazendo eu pego o valor, ae depois do um setValue() que vai abrir outra transação ne!
So que queria fazer isso com o EJB, algo que ele pegasse continuasse na mesma transacao e eu ja atualizasse, agora agora tive pensando ate em do jeito que eu faco um findByName(String), tem como eu faze um Update ?
t+