2009-10-09 2 views
0

프로젝트가 원래 seam-gen에 의해 생성되었으며 "List"작업이 예상대로 작동하지 않습니다. 제한 배열에는 table의 모든 특성이 있으며 모든 매개 변수가 필수 인 것처럼 작동합니다. 목록 우는 소리를 참조하십시오SEAM ENTITYQUERY - 제한 사항 seam-gem 예

package br.com.autenticis.comvenif_red_web.session; 

import br.com.autenticis.comvenif_red_web.entity.*; 
import org.jboss.seam.annotations.Name; 
import org.jboss.seam.framework.EntityQuery; 
import java.util.Arrays; 

@Name("t233Ev01List") 
public class T233Ev01List extends EntityQuery<T233Ev01> { 

private static final String EJBQL = "select t233Ev01 from T233Ev01 t233Ev01"; 

private static final String[] RESTRICTIONS = { 
    //"lower(t233Ev01.placaUnica) like lower(concat(#{t233Ev01List.t233Ev01.placaUnica},'%'))",}; 
    "lower(t233Ev01.placaUnica) like lower(concat(#{t233Ev01List.t233Ev01.placaUnica},'%'))", 
    "lower(t233Ev01.renavam) like lower(concat(#{t233Ev01List.t233Ev01.renavam},'%'))", 
    "lower(t233Ev01.numIdentProprietario) like lower(concat(#{t233Ev01List.t233Ev01.numIdentProprietario},'%'))", 
    "lower(t233Ev01.nomeProprietario) like lower(concat(#{t233Ev01List.t233Ev01.nomeProprietario},'%'))", 
    "lower(t233Ev01.anoFabricacao) like lower(concat(#{t233Ev01List.t233Ev01.anoFabricacao},'%'))", 
    "lower(t233Ev01.anoModelo) like lower(concat(#{t233Ev01List.t233Ev01.anoModelo},'%'))", 
    "lower(t233Ev01.ufByUfEmissao) like lower(concat(#{t233Ev01List.t233Ev01.ufByUfEmissao},'%'))", 
    "lower(t233Ev01.numeroCrv) like lower(concat(#{t233Ev01List.t233Ev01.numeroCrv},'%'))", 
    "lower(t233Ev01.dataEmissao) like lower(concat(#{t233Ev01List.t233Ev01.dataEmissao},'%'))", 
    "lower(t233Ev01.numeroVia) like lower(concat(#{t233Ev01List.t233Ev01.numeroVia},'%'))", 
    "lower(t233Ev01.codigoSegurancaCrv) like lower(concat(#{t233Ev01List.t233Ev01.codigoSegurancaCrv},'%'))", 
    "lower(t233Ev01.tipoDocCartorio) like lower(concat(#{t233Ev01List.t233Ev01.tipoDocCartorio},'%'))", 
    "lower(t233Ev01.numIdentCartorio) like lower(concat(#{t233Ev01List.t233Ev01.numIdentCartorio},'%'))", 
    "lower(t233Ev01.numIdentCv) like lower(concat(#{t233Ev01List.t233Ev01.numIdentCv},'%'))",}; 

private T233Ev01 t233Ev01; 

public T233Ev01List() { 
    t233Ev01 = new T233Ev01(); 
    t233Ev01.setId(new T233Ev01Id()); 
    setEjbql(EJBQL); 

    setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS)); 
    setMaxResults(25); 
} 

public T233Ev01 getT233Ev01() { 
    return t233Ev01; 
} 
} 

난 그냥 예를 들어 양식의 필드 "새겨 져 유니카"를 입력하면 모든 필드가있는 SQL은 다음과 같이 생성됩니다

SELECT * 
    FROM (SELECT t233ev01x0_.idtransacao AS idtransa1_26_, 
       t233ev01x0_.dia_juliano AS dia2_26_, 
       t233ev01x0_.uf_imovel_comprador AS uf38_26_, 
       t233ev01x0_.uf_imovel_cartorio AS uf37_26_, 
       t233ev01x0_.uf_emissao AS uf36_26_, 
       t233ev01x0_.placa_unica AS placa3_26_, 
       t233ev01x0_.renavam AS renavam26_, 
       t233ev01x0_.num_ident_proprietario AS num5_26_, 
       t233ev01x0_.nome_proprietario AS nome6_26_, 
       t233ev01x0_.ano_fabricacao AS ano7_26_, 
       t233ev01x0_.ano_modelo AS ano8_26_, 
       t233ev01x0_.numero_crv AS numero9_26_, 
       t233ev01x0_.data_emissao AS data10_26_, 
       t233ev01x0_.numero_via AS numero11_26_, 
       t233ev01x0_.codigo_seguranca_crv AS codigo12_26_, 
       t233ev01x0_.tipo_doc_comprador AS tipo13_26_, 
       t233ev01x0_.num_ident_comprador AS num14_26_, 
       t233ev01x0_.nome_comprador AS nome15_26_, 
       t233ev01x0_.nome_logradouro_comprador AS nome16_26_, 
       t233ev01x0_.numero_imovel_comprador AS numero17_26_, 
       t233ev01x0_.complemento_imovel_comprador AS complem18_26_, 
       t233ev01x0_.bairro_imovel_comprador AS bairro19_26_, 
       t233ev01x0_.cod_municipio_imovel_comprador AS cod20_26_, 
       t233ev01x0_.cep_imovel_comprador AS cep21_26_, 
       t233ev01x0_.cod_municipio_local_venda AS cod22_26_, 
       t233ev01x0_.data_venda AS data23_26_, 
       t233ev01x0_.tipo_doc_cartorio AS tipo24_26_, 
       t233ev01x0_.num_ident_cartorio AS num25_26_, 
       t233ev01x0_.nome_cartorio AS nome26_26_, 
       t233ev01x0_.nome_logradouro_cartorio AS nome27_26_, 
       t233ev01x0_.numero_imovel_cartorio AS numero28_26_, 
       t233ev01x0_.complemento_imovel_cartorio AS complem29_26_, 
       t233ev01x0_.bairro_imovel_cartorio AS bairro30_26_, 
       t233ev01x0_.cod_municipio_imovel_cartorio AS cod31_26_, 
       t233ev01x0_.cep_imovel_cartorio AS cep32_26_, 
       t233ev01x0_.ddd_tel_cartorio AS ddd33_26_, 
       t233ev01x0_.num_tel_cartorio AS num34_26_, 
       t233ev01x0_.num_ident_cv AS num35_26_ 
      FROM autenticis_comvenif.t233_ev01 t233ev01x0_ 
     WHERE (LOWER (t233ev01x0_.renavam) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.ano_fabricacao) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.ano_modelo) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.numero_crv) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.data_emissao) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.numero_via) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.tipo_doc_cartorio) LIKE LOWER (? || '%')) 
      AND (LOWER (t233ev01x0_.num_ident_cv) LIKE LOWER (? || '%'))) 
WHERE ROWNUM <= ? 

내가 싶지 않아 질의에 채워지지 않은 필드 (null). "Dynamic Restriction"에 대한 예제를 찾지 못했습니다.

답변

0

Cateno, 이것은 내게 일어난 일처럼 의심스러워 보입니다. 필자의 경우 해당 엔티티는 테이블이 아닌보기이므로 seam/hibernate는 ID로 사용할 기본 키 필드를 찾을 수 없습니다.

이보기에서 seam generate-entities는 2 개의 엔티티를 작성했습니다. 하나는 ID 만 포함하고 다른 엔티티는 다른 모든 필드와 함 2 포함됩니다. 나는 그것이 무엇을했는지, 왜 그런지 이해하지 못했습니다. 해당 EntityList 내가 여기에 게시 한 것과 같이 의심스럽게 보입니다.

내가이 문제를 해결 한 방법은 seam-gen.reveng.xml 파일에서이 엔티티의 주 자식을 명시 적으로 정의하는 것이 었습니다. 해당 파일은 resources 폴더에 있습니다. 예를 들어 내 reveng.xml 파일의 항목이 다음과 같습니다.

<table name="office_view"> 
    <primary-key> 
     <key-column name='office_id' /> 
    </primary-key> 
</table> 

여기에 기본 키를 명시 적으로 정의하면 도움이 될 수 있습니다.

april26