Author Archives: Gustavo Amaro
SQL – UPDATE a partir de um SELECT
E ai galera, beleza?
Hoje vamos aprender como efetuar UPDATE em registros obtidos a partir de um SELECT, temos duas formas e fazê-lo, para exemplificar vamos considerar o seguinte SELECT:
SELECT A.* FROM TAB_A A JOIN TAB_B B ON (A.ID = B.ID) WHERE <CONDIÇÕES...>
Opção 1 – Utilizar o SELECT desejado no lugar da tabela a ser alterada, no SET utilize as colunas da TAB_A que serão atualizadas:
UPDATE ( SELECT A.* FROM TAB_A A JOIN TAB_B B ON (A.ID = B.ID) WHERE <CONDIÇÕES...> ) SET <COL1 TAB_A> = <VAL1>, <COL2 TAB_A> = <VAL2>
A abordagem acima em algumas modelagem podem acarretar no erro ORA-01779: cannot modify a column which maps to a non key-preserved table, quando isso acontecer utilize a opção 2, abaixo.
Opção 2 – Utilizar a clausula EXISTS no WHERE do UPDATE tradicional:
UPDATE TAB_A TA SET <COL1 TAB_A> = <VAL1>, <COL2 TAB_A> = <VAL2> WHERE EXISTS ( SELECT A.* FROM TAB_A A JOIN TAB_B B ON (A.ID = B.ID) WHERE <CONDIÇÕES...> AND A.ID = TA.ID )
Espero que tenha ajudado! Qualquer dúvida, poste aqui nos comentários que eu responderei o mais breve possível 😉
See ya!
MongoDB – Erro: Can’t extract geo keys
E ai galera, estou me aventurando no mundo NoSQL com o sr. MongoDB…
E ao criar meu primeiro índice para fazer pesquisas por proximidade, tomei meu primeiro erro, e tive que ir atrás para resolve-lo 😦
Oque aconteceu, peguei latitudes e longitudades pelo google maps, lá pros lados da austrália…
type: "Point", coordinates: [ -33.91991, 151.257018 ]
adicionei ao meu documento e tentei gerar o índice e tomei o erro abaixo:
db.xxx.createIndex({ xxx : "2dsphere"})
…
“ok” : 0,
“errmsg” : “Can’t extract geo keys… longitude/latitude is out of bounds, lng: … lat: …”,
“code” : 16755,
“codeName” : “Location16755”
Dando uma pesquisada, descobri é que o google maps disponibiliza os valores na ordem diferente (latitude/longitude) da qual o MongoDB espera (longitude/latitude)… para resolver o problema apenas precisei inverter os valores inseridos e o índice foi criado sem problemas 😀
Os valores da Longitude deve estar entre -180° e +180° e a Latitude entre -90° e 90°!!! (Y)
Espero que tenha ajudado!
Erro: web.xml is missing and is set to true
E ai galera, beleza?
Está tomando o erro “web.xml is missing and <failOnMissingWebXml> is set to true” no seu projeto maven dentro do eclipse???
Então vamos corrigir esse erro!
- Clique com o botão direito no ‘Deployment Descriptor’ dentro do seu projeto no ‘Project Explorer’.
- Selecione a opção ‘Generate Deployment Descriptor Stub’.
- Pronto !!! 😀
Isso irá gerar a pasta ‘WEB-INF’ no src/main/webapp com o web.xml dentro.
Abraços!!!
JBoss AS 7.1.1 “Brontes” não termina de subir nunca?
Boa noite galera,
depois de muito tempo sem postar, bora postar uma dica rápida pra você que está
tendo problemas para subir o JBoss AS 7.1.1 “Brontes”!
O servidor fica subindo durante minutos, travado na mesangem:
JBAS015899: JBoss AS 7.1.1.Final “Brontes” starting
e nada de terminar de subir…
Indo direto ao ponto!!! O JBoss AS 7.1 não roda no JDK8!!!
Você tem 2 opções:
1ª opção: Faça o downgrade para o JDK7
2ª opção: Troque o JBoss pelo WildFly
😉
Abraços! Espero que tenha ajudado!
Fonte: developer.jboss.org – Tomaz Cerar
JPQL – Como criar query de DELETE com JOIN
E ai galera beleza?
Estou em um novo projeto muito legal, e me deparei com um problema, eu precisava fazer uma query para deletar uns dados no banco, só que pra selecionar exatamente oque eu precisava excluir era necessário utilizar joins, porém ao montar uma query parecida com essa:
delete from Queue q
where q.enabledMember = :enabledMember
and q.letter.eventReason.event.type = :eventType
and q.letter.eventReason.reason = :reason
Tomei o seguinte erro:
The entity abstract schema type declaration is malformed
Pesquisei um pouco na net e achei a seguinte solução, deletar a partir de um subselect, a query ficou assim:
delete from Queue q
where q in (select sq from Queue sq
where sq.enabledMember = :enabledMember
and sq.letter.eventReason.event.type = :eventType
and sq.letter.eventReason.reason = :reason )
Bom, é isso ai galera, espero que tenha ajudado 😀
Abraços!
Fonte: Jake Trent – JakeTrent.com
JBoss solicitando “usuário” e “senha” para “XDB”
E ai galera beleza?
Eu estava fazendo uns testes aqui, instalei o JBoss 7.1.1, configurei, quando fui acessar a porta 8080
me apareceu um popup (acima) solicitando usuário e senha… depois de tentar todas as senhas do mundo,
procurei no titio google a solução, e felizmente encontrei…
O meu OracleXE e o meu Jboss estão rodando na mesma porta, por esse motivo fica pedindo esse usuário e senha,
havendo assim um conflito, que na verdade faz o OracleXE pedir usuário/senha e não o JBoss…
Solução?
Alterar a porta do JBoss:
https://spigandoeaprendendo.wordpress.com/2012/12/18/alterando-as-portas-do-jboss-4-2-e-jboss-7/
ou alterar a porta do OracleXE… 😀
Após fazer isso e tentar acessar pela nova porta, tudo irá funcionar perfeitamente!
jQuery – O método load()
Como descrito nos capítulos anteriores, existem várias maneiras de usar AJAX com jQuery, e elas devem com certeza ser usadas dependendo da situação. Um dos métodos mais simples e ainda sim poderoso para carregar dados assincronamente é o método load(). Você o usa escolhendo um elemento onde você quer o conteúdo carregado e então chama o método load() nele. Ele recebe a URL que você deseja carregar, como parâmetro. Por exemplo, nós precisamos de um arquivo externo que nós podemos carregar. Nós vamos chamar de content.html e o conteúdo dele deve ser parecer com isso:
<div id="divContent"> <b>This is external content</b> </div> And there's more of it
Salve isso como content.html, no mesmo diretório onde você mantém os outros arquivos de exemplo deste tutorial. Nós podemos carregar ele simples assim:
<div id="divTestArea1"></div> <script type="text/javascript"> $(function() { $("#divTestArea1").load("content.html"); }); </script>
Se você tem o arquivo de conteúdo em outro diretório, ou se você nomeou ele diferentemente, você terá que mudar o parâmetro para o método load consequentemente. Isso é tudo que ele precisa para carregar o conteúdo de um arquivo externo com jQuery e o método load. Um truque muito legal é que você pode na verdade passar um seletor (selector) juntamente com a URL, para apenas pegar uma parte da página. No primeiro exemplo, nós carregamos o arquivo inteiro, mas no exemplo seguinte, nós vamos apenas usar a div, que contém a primeira sentença:
<div id="divTestArea2"></div> <script type="text/javascript"> $(function() { $("#divTestArea2").load("content.html #divContent"); }); </script>
Como você pode ver, nós simplesmente anexamos um seletor jQuery padrão ao parâmetro, depois da URL, separada por um espaço. Isso faz o jQuery selecionar o conteúdo fora e apenas passa as partes correspondidas de volta ao container. Você pode usar qualquer tipo de seletor jQuery para retirar esse truque, que o torna muito poderoso.
O método load pode receber dois parâmetro extra: Um conjunto de string de consulta (querystring) pares de chave/valor, e uma função de callback que será executada quando o método load terminar, não importa se ele tiver êxito ou falhar. Aqui está um exemplo onde nós usamos a função callback para informar sobre o resultado. Normalmente, você deveria provavelmente apenas mostrar uma mensagem se o método falhasse, mas para ilustrar como isso funciona, nós fazemos isso se o método falhar também. Eu me certifiquei que isso falharia por exemplo, requisitando um arquivo que não existe:
<div id="divTestArea3"></div> <script type="text/javascript"> $(function() { $("#divTestArea3").load("no-content.html", function(responseText, statusText, xhr) { if(statusText == "success") alert("Successfully loaded the content!"); if(statusText == "error") alert("An error occurred: " + xhr.status + " - " + xhr.statusText); }); }); </script>
Como você pode ver, a função de callback especifica 3 parâmetros, que jQuery preencherá para você. O primeiro parâmetro irá conter o conteúdo resultado se a chamada tiver sucesso. O segundo parâmetro é uma string que especifica o estado da chamada, ex. “sucesso” ou “erro”. Você pode usar isso para ver se a chamada foi bem sucedida ou não. O terceiro parâmetro é o objeto XMLHttpRequest usado para executar a chamada AJAX. Isso conterá propriedades que você pode usar para ver o que deu errado e muitas outras coisas.
Fonte: jQuery-tutorial.net
jQuery – Introdução ao AJAX
AJAX, abreviação para Asynchronous JavaScript And XML (XML e JavaScript Assíncronos), permite você carregar dados em background e mostra-lo na sua página web. Isso lhe permite criar websites com funcionalidade mais rica.Aplicações web populares como Gmail, Outlook Web Access, e Google Maps usam AJAX e extensivamente, para fornecer a você uma experiência mais responsiva, como desktop.
Usar AJAX pode ser um pouco complicado, porque os vários navegadores tem diferentes implementações para suportar AJAX. Normalmente isso irá lhe forçar a escrever código para responder de forma diferente, dependendo do navegador, mas felizmente, jQuery fez isso pra gente, que nos permite escrever AJAX funcionalmente com tão pouco quanto uma única linha de código.
Você deve estar ciente do fato que existe ambas vantagens e desvantagens ao usar AJAX na sua página, que significa que você deve sempre considerar cuidadosamente antes de decidir usar isso ao invés de fazer uma chamada comum de volta ao servidor. Aqui está um resumo:
Vantagens:
- Sua página será mais prazerosa de usar, quando você pode atualizar partes dela sem um refresh, que faz o navegador piscar e rodar a barra de status.
- Porque você apenas carrega o dado que você precisa para atualizar a página, ao invés de atualizar a página inteira, você salva largura de banda.
Desvantagens:
- Porque as atualizações são feitas pelo JavaScript no cliente, o estado não irá registrar no histórico do navegador, fazendo isso impossível de usar os botões Voltar e Avançar do navegador entre os vários estados da página.
- Pelo mesmo motivo, um estado específico não pode ser favoritado pelo usuário.
- Dado carregado através do AJAX não será indexado por qualquer dos maiores motores de busca.
- Pessoas usando navegadores sem suporte JavaScript, ou com JavaScript desabilitado, não será capaz de usar a funcionalidade que você fornece através do AJAX.
Os dois primeiros itens da lista podem ser contornados embora, tipicamente através do uso de um iframe e lendo e escrevendo dado de uma parte da URL depois do caractere “#”.
Nos capítulos seguintes, você irá aprender como usar várias funções AJAX relacionadas ao jQuery.
Fonte: jquery-tutorial.net