Arquivos de sites

JPA2/Hibernate – Auto-incremento em colunas non-id (sem anotação @Id)

E ai galera beleza? hoje tive um problema ao tentar implementar:

@SequenceGenerator(name="MINHA_SEQUENCE", sequenceName="MINHA_SEQUENCE", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="MINHA_SEQUENCE")

em uma coluna que não tinha @Id… simplesmente não estava criando a sequence, consequentemente, não gerava o valor automatico…

achei a seguinte solução: (não utiliza as anotações @SequenceGenerator e @GeneratedValue)

@Column(columnDefinition="serial")
@Generated(GenerationTime.INSERT)

testei no postgresql e funcionou perfeitamente!

Espero que ajude 😀 abraços !

Fonte: Sergey Vedernikov – Stackoverflow / axtavt – Stackoverflow

JBoss – Criando/Configurando um Datasource

E ai galera beleza, segue um tutorial de como criar um Datasource utilizando MySQL (ou qualquer outro Banco de Dados) no JBoss…

1. No arquivo JBOSS_HOME\standalone\configuration\standalone.xml :
(procure as linhas abaixo…)

<subsystem xmlns=”urn:jboss:domain:datasources:1.0″>
<datasources>
<datasource jndi-name=”java:jboss/datasources/ExampleDS” pool-name=”ExampleDS” enabled=”true” use-java-context=”true”>
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<drivers>
<driver name=”h2″ module=”com.h2database.h2″>
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>

Adicione as seguintes linhas após a tag  </datasource>:
<datasource jta=”true” jndi-name=”java:jboss/datasources/seuDataSourceDS” pool-name=”seudatasource” enabled=”true” use-java-context=”true” use-ccm=”true”>
<connection-url>jdbc:mysql://localhost:3306/seubancodedados</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>suasenha</password>
</security>
</datasource>

Adicione as seguintes linhas após a tag  </driver>:
<driver name=”mysql” module=”com.mysql”>
<xa-datasource-class>com.mysql.jdbc.Driver</xa-datasource-class>
</driver>

2. Adicione o seu arquivo jar do driver do banco (mysql-connector-java-X.X.X-bin.jar) na pasta JBOSS_HOME\modules\com\mysql\main (caso o diretorio mysql\main não exista crie-o).

3. Nesta mesma pasta crie o arquivo module.xml com o seguinte conteudo: (cuidado para não deixar nenhum espaço em branco no começo do conteudo do arquivo, pode dar problema!)

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.0" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-java-X.X.X-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

Se estiver utilizando JPA/Hibernate adicione a seguinte linha no seu persistence.xml:
<jta-data-source>java:jboss/datasources/seuDataSourceDS</jta-data-source>

Bom espero que ajude, achei essa configuração indo atrás de um erro que tomei:

New missing/unsatisfied dependencies: service jboss.naming.context.java.jboss.datasources.XXXXX (missing) dependents: [service jboss.persistenceunit."..."]

Acredito que é a mesma regra para os outros bandos de dados (mudando as devidas informações)… See ya 😀

Fonte: StackOverflow – Piotr Kochański / sven / appa