quarta-feira, 29 de junho de 2011

No Dialect mapping for JDBC type: 2004

Olá..

Um cliente aqui usa o banco de dados Informix.. ao testar nosso projeto nesse banco tive o seguinte erro:

13:57:15,040 INFO [DatabaseMetadata] table not found: MY_TABLE
13:57:15,041 ERROR [SchemaUpdate] could not complete schema update: org.hibernate.MappingException: No Dialect mapping for JDBC type: 2004
at org.hibernate.dialect.TypeNames.get(TypeNames.java:79) [:3.5.5-Final]
at org.hibernate.dialect.TypeNames.get(TypeNames.java:104) [:3.5.5-Final]
at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:347) [:3.5.5-Final]

O problema era que temos uma tabela que guarda uma imagem em uma de suas colunas e usamos @Lob no seu mapeamento. O Dialeto do Informix não aceitou o @Lob.

Para resolver extendi o Dialeto do Informix e adicionei as seguinte linhas no construtor:

registerColumnType(Types.BLOB, "blob");
registerColumnType(Types.CLOB, "clob");

Mais detalhes em http://www.snailshell.de/blog/archives/2007/06/entry_108.html

Alterei o persistence.xml para usar o dialeto que criei e o projeto funcionou perfeitamente.

Outras fontes:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2646
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2523

Vaaleu
Adriano Schmidt

quinta-feira, 16 de junho de 2011

java.lang.String cannot be cast to org.servebox.flex.mojo.FlexLicense

Olá, aconteceu comigo agora o erro:

java.lang.ClassCastException: java.lang.String cannot be cast to org.servebox.flex.mojo.FlexLicense
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.handleCompilationOptions(AbstractFlexMakeMojo.java:1142)
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.handleConfiguration(AbstractFlexMakeMojo.java:990)
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.invokeCompiler(AbstractFlexMakeMojo.java:923)
at org.servebox.flex.mojo.MakeSWFMojo.invokeCompiler(MakeSWFMojo.java:105)
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.compile(AbstractFlexMakeMojo.java:858)
at org.servebox.flex.mojo.MakeSWFMojo.compile(MakeSWFMojo.java:113)

O erro aconteceu pois eu usei a tag abaixo:
<licenses>
<flexbuilder3>1111-1111-1111-1111-1111-1111</flexbuilder3>
</licenses>

Mas deveria ter usado da seguinte forma:
<flex3LicenceKey>1111-1111-1111-1111-1111-1111</flex3LicenceKey>

Ambas as formas estavam dentro de <plugin> e dentro de <configuration>

Vaaleu!

segunda-feira, 21 de março de 2011

Unable to find XML mapping file in classpath

Ao usar a tag <mapping-file> no meu persistence.xml tive o seguinte erro quando iniciei o JBoss:

Unable to find XML mapping file in classpath: br.com.localhost8080.Teste2.hbm.xml

O erro era que a separação dos pacotes deve ser feita com barra e não ponto:

Assim:
<mapping-file>br/com/localhost8080/Teste2.hbm.xml</mapping-file>
Não assim:
<mapping-file>br.com.localhost8080.Teste2.hbm.xml</mapping-file>

Vaaleu!
Adriano Schmidt

cvc-complex-type.2.4.a: Invalid content was found starting with element 'mapping-file'

Olá,

Ao utilizar a tag <mapping-file> no persistence.xml eu tive o seguinte erro:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'mapping-file'. One of '{"http://
java.sun.com/xml/ns/persistence":class, "http://java.sun.com/xml/ns/persistence":exclude-unlisted-classes,
"http://java.sun.com/xml/ns/persistence":properties}' is expected.


O problema é que no meu persistence.xml eu tinha uma tag <class> antes da tag <mapping-file>. Para resolver só joguei a tag class pra baixo da tag <mapping-file>. Assim:

<mapping-file>br/com/localhost8080/Teste2.hbm.xml</mapping-file>
<class>br.com.localhost8080.Teste1</class>

Caso você use a tag <jar-file> ela também deve estar depois da tag <mapping-file>

Vaaleu!

sexta-feira, 18 de março de 2011

JBoss 6 Final eclipse

Olá, utilizando o JBoss 6 M5 no eclipse tudo ocorria bem, quando fui migrar para o JBoss 6 Final tive o seguinte erro:

Error installing to Instantiated: name=PostEjbJarMetadataDeployer state=Described: java.lang.NoSuchMethodError: javax.annotation.Resource.lookup()Ljava/lang/String;

Para resolver bastou adicionar nos VM arguments o seguinte:

-Djava.endorsed.dirs="C:\jboss-6.0.0-Final\lib\endorsed"

Troque C:\jboss-6.0.0-Final pela pasta do seu JBoss.

Fontes:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=250643
http://community.jboss.org/message/587813?tstart=60

Vaaleu!

quinta-feira, 17 de março de 2011

p:tabView volta primeira aba

Olá,

O TabView do primefaces volta para a primeira aba em algumas situacoes (quando ele está dentro de um <a4j:outputPanel ajaxRendered="true"> e dentro de um tab tem um rich:datatable e um botão é pressionado no datascroller (nossa, é difícil, mas aconteceu comigo)).

Para resolver isso, simplesmente tire o tabView do outputPanel.

Caso isso não possa ser feito, na troca de aba deve ser setado o 'activeIndex' do tabView. Da seguinte forma:

No tabView deve ser adicionado o tabChangeListener e o activeIndex. E as tabs devem ter seu id setado:

<p:tabView tabChangeListener="#{myBean.onTabChange}" activeIndex="#{myBean.currentTab}">
<p:tab title="primeria aba" id="tab0">
</tab>

<p:tab title="segunda aba" id="tab1">
</tab>

<p:tab title="terceira aba" id="tab2">
</tab>
</p:tabView>


No Bean adicione isso:

private int currentTab = 0;

public int getCurrentTab() {
return currentTab;
}

public void setCurrentTab(int currentTab) {
this.currentTab = currentTab;
}

public void onTabChange(org.primefaces.event.TabChangeEvent event) {
String id = event.getTab().getId();
if (id.equals("tab0")) {
this.setCurrentTab(0);
} else if (id.equals("tab1")) {
this.setCurrentTab(1);
} else if (id.equals("tab2")) {
this.setCurrentTab(2);
}
}


Acredito que isso não funciona no primefaces 2.1.. aqui no 2.2.1 funcionou..

É isso, vaaleu. Abraço.

sexta-feira, 11 de março de 2011

ORA-01452: cannot CREATE UNIQUE INDEX

Olá,

Fui criar um índice único no oracle:

CREATE UNIQUE INDEX nome_do_indice ON nome_da_tabela (coluna1, coluna2, coluna3);

e aconteceu o seguinte erro:

Error: ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found

Isso aconteceu pois na tabela que fui inserir o índice já haviam registros que violavam esse índice, por isso não permitiu criar..

Para resolver removi os registros que violavam o índice e deu tudo certo.

Mais detalhes sobre o erro: http://ora-01452.ora-code.com/
Mais detalhes sobre índices no oracle: http://www.techonthenet.com/oracle/indexes.php

Vaaleu!
Adriano Schmidt.

terça-feira, 8 de março de 2011

erro converter jsf

Olá,

Ao criar um converter para utilizar na minha aplicação JSF, tive um problema quando defino ele com o forClass e value (converter-for-class e converter-id no faces-config.xml) simultaneamente.

Apenas um dos dois é permitido, os dois juntos não! Se precisa disso terá que criar duas classes diferentes.

Veja como não pode ser feito:

<converter>
<converter-id>Localhost8080Converter</converter-id>
<converter-for-class>java.lang.String</converter-for-class>
<converter-class>br.com.localhost8080.Localhost8080Converter</converter-class>
</converter>

@FacesConverter(forClass = String.class, value="Localhost8080Converter")
public class Localhost8080Converter implements Converter { ... }

É isso aí. Abraços.
Adriano Schmidt

quinta-feira, 3 de março de 2011

join type not supported by OracleJoinFragment

Hoje ao usar um right join num banco oracle tive o seguinte erro:

join type not supported by OracleJoinFragment (use Oracle9iDialect/Oracle10gDialect)

Para resolver tive que trocar o hibernate.dialect do persistence.xml de:
org.hibernate.dialect.OracleDialect
para:
org.hibernate.dialect.Oracle10gDialect

Pronto, resolvido.
Adriano Schmidt

terça-feira, 8 de fevereiro de 2011

SQL Server - Apparently wrong driver class specified for URL

Olá, hoje tive o seguinte erro ao iniciar o JBoss num ambiente SQL Server 2000:

15:45:18,348 WARN [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: com.microsoft.sqlserver.jdbc.SQLServerDriver, url: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydatabase)

O problema era a URL de conexão com o banco no meu arquivo ds.xml, tirei o :microsoft

jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydatabase
jdbc:sqlserver://localhost:1433;DatabaseName=mydatabase

Vaaleu!
Adriano Schmidt