Autor |
Mensagem |
|
vlw rogel, o erro de duplicação foi resolvido... achei q num tinha a necessidade de informar o campo de primary key... mas já está ok!!!
No entanto, ainda persiste o erro ao deletar conforme relatado no tópico anterior... alguma idéia de como resolver isso???
vlw obrigado
|
 |
|
e ai rogel blz...
implementei as telas de cadastro e listagem Master-Detalhe... fiz algumas alterações nas tags do NEO para poder implementar a listagem mas ambas funcionaram blz...
tô com um outro problema agora que independe da CRUD Master-Detalhe... quando eu tento editar um registro ele num está alterando o registro atual mas sim criando uma cópia do registro... na verdade e como se ele salvasse um novo com as mesmas informações ao invés de editar...
e tmb está acontecendo um erro no momento da exclusão de um registro...
Code:
* not-null property references a null or transient value: br.inf.mastersoft.agil.ci.pojo.metas.Meta.nome; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: br.inf.mastersoft.agil.ci.pojo.metas.Meta.nome
o not-null property references a null or transient value: br.inf.mastersoft.agil.ci.pojo.metas.Meta.nome
seriam esses problemas no mapeamento ou na implementação do DAO???
segue abaixo o código do DAO de meta...
Code:
public class MetaDAO extends GenericDAO<Meta> {
@Override
public void updateEntradaQuery(QueryBuilder<Meta> query) {
query.fetchCollection("acoes");
query.fetchCollection("objetivos");
}
@Override
public void updateSaveOrUpdate(SaveOrUpdateStrategy save) {
save.saveOrUpdateManagedNormal("acoes");
save.saveOrUpdateManagedNormal("objetivos");
}
public Meta findMetaWithDetails(String codigo) {
return new QueryBuilder<Meta>(getHibernateTemplate())
.from(Meta.class)
.fetchCollection("acoes")
.fetchCollection("objetivos")
.where("codigo = ?", Long.valueOf(codigo))
.unique();
}
}
o método findMetaWithDetails eu usei apenas para implementar a listagem do Master-Detalhe...
abaixo o mapeamento de Meta...
Code:
@Entity
@Table(name="CI_META")
@SequenceGenerator(name="GEN_META_ID", sequenceName="GEN_META_ID", allocationSize=1)
public class Meta implements Serializable {
private static final long serialVersionUID = 1L;
private Long codigo;
private String nome;
private String descricao;
private List<Objetivo> objetivos;
private List<Acao> acoes;
private Date dataLimite;
private BigDecimal valorOrcado;
private BigDecimal valorRealizado;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GEN_META_ID")
@Column(name="CD_META")
public Long getCodigo() {
return codigo;
}
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.REMOVE}, mappedBy="meta")
public List<Acao> getAcoes() {
return acoes;
}
@Required
@Column(name="DT_LIMITE_META", nullable=false)
public Date getDataLimite() {
return dataLimite;
}
@Column(name="DS_META", length=255)
public String getDescricao() {
return descricao;
}
@Required
@DescriptionProperty
@Column(name="NM_META", length=100, nullable=false)
public String getNome() {
return nome;
}
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.REMOVE}, mappedBy="meta")
public List<Objetivo> getObjetivos() {
return objetivos;
}
@Required
@Column(name="VL_ORCADO", nullable=false, precision=18, scale=2)
public BigDecimal getValorOrcado() {
return valorOrcado;
}
@Column(name="VL_REALIZADO", precision=18, scale=2)
public BigDecimal getValorRealizado() {
return valorRealizado;
}
....
quando usava o SpringMVC e acontecia esse problema de duplicação do registro tinha q subscrever o método Code:
protected ModelAndView handleInvalidSubmit(HttpServletRequest request, HttpServletResponse response) throws Exception
para corrigir o erro... mas suponho que os controllers do NEO já façam isso... o que seria então a causa do problema???
fico no aguardo....
vlw, obrigado
|
 |
|
vlw rogel isso vai ajudar bastante....
E com relação a listagem? o que vc sugere que eu faça para exibir as informações na mesma tela? Tem alguma forma de facilitar essa parte?
...
t+
|
 |
|
e aí pessoal...
seguinte... gostaria de saber se o NEO traz alguma implementação pronta para telas CRUD Master-Detalhe.
Tenho uma situação onde preciso fazer um cadastro de metas. Pórem, essas metas possuem uma lista de acões e uma lista de objetivos. Implementei o cadastro separadamente e está tudo funcionando tudo blz.
Contudo, gostaria de centralizar o cadastro numa única tela para facilitar a vida do usuário... estive olhando a tag <t:detalhe> e vi que ela aparentemente resolve o problema na entrada dos dados.. mas não consegui nada com a listagem....
Dei uma olhada também neste post sobre uma tela de multiplos cadastros... mas implementação usada não utiliza CrudController...
Então minha duvida é a seguinte: Utilizando a tag <t:detalhe> vou conseguir resolver o problema tanto na entrada como na listagem dos dados? Se sim, podem me passar um exemplo de sua utilização?!?!?! Se não, qual seria a alternativa? Uma implementação sem CrudController semelhante ao que vou utilizado no post acima???
vlw galera fico no aguardo... ahh e parabéns por responderem tão prontamente... isso aumenta a segurança da utilização do framework pois temos a certeza que seremos prontamente atendidos em caso de problemas...
flw
|
 |
|
blz cara... vou implementar aqui... valeu pela ajuda!!!
t+
|
 |
|
E aí pessoal...
observei na estrutura de pacotes no NEO que tem um pacote com o nome "report". O NEO oferece alguma facilidade na geração de relatórios com o Jasper??? Se sim como utilizar essa funcionalidade?
vlw galera... fico no aguardo...
|
 |
|
vlw rogel eu realmente tinha entendido errado...
sobre a questão de segurança eu fiquei com um dúvida: o NEO possui uma estrutura própria de segurança (além do que você citou, coisas com o Acegi tem hoje) ou eu preciso usar um outro framework com essa finalidade (o próprio Acegi, por exemplo)???
flw
|
 |
|
E aí pessoal... gostaria de participar da discussão tmb...
rogel.garcia, achei muito interessante a maneira q vc projetou essa questão de "propriedades calculadas"... gostaria de sugerir apenas uma coisa: pelo que entendi nesse exemplo:
<bean name="x"> Estamos no escopo do x
<t:property name="a"/>
<t:property name="b"/>
<t:property name="a + b"/>
</bean>
o valor de 'a + b' só seria atualizado depois de você fazer um get('x').reloadFromServer().
Supondo que estejamos lidando com isso num grid de tamanho razoável, seria várias requisições ao servidor que teriam que ser processadas num curto espaço de tempo para que as propriedades fosses atualizadas corretamente. Não seria interessante, criar uma estrutura JS que fizesse essa atualização no cliente e só depois atualizasse o servidor??? Isso evitaria o grande número de requisições, o que tornaria a atualização muito mais rápida já que seria executada diretamente no browser. Tá... mas como fazer isso automático??? Num sei... talvez quando a página fosse processada, o servidor construiria os códigos JS necessários para a tualização das propriedades e mandaria esse JS para o browser, permitindo que ele próprio executasse a atualização.
Bom, você poderia perguntar: e a segurança??? Bem, eu concordo q JS num é a coisa mais segura do mundo... mas poderia ser realizado uma verificação de consistência das propriedades quando essas chegassem ao servidor...
Estou colocando apenas uma sugestão de melhoria... mas continuo afirmando que a sua arquitetura realmente é muito interessante...
vlw...
|
 |
|
E aí galera... sou sócio de Igor e também achei excelente as funcionalidades do NEO. Parabéns ao Rogel e a toda a equipe de desenvolvimento... muito bom...
Com relação à RIA gostaria de contribuir juntamente com Igor para implementar essas novas funcionalidades...
valeu...
|
 |
|