Caracter estranho [RESOLVIDO]

6 respostas
davilima81

Por que tenho que utilizar “” para usar tabelas ou sequences no PostgreSQL? :shock:

Vejam um exemplo:

@Entity
@Table(name = ““UNI_UNIDADE””)
@SequenceGenerator(name = “seqUnidade”, sequenceName = ““SEQ_UNIDADE””, allocationSize = 1)

Estou preocupado com a mudança do Banco caso o Sistema cresça demasiadamente, pois já testei com Oracle e SQL Server e não foi necessário utilizar “”.

6 Respostas

leonardobhbr

Amigo eu suo postgres com campo serial e não preciso colocar barra nenhuma em nenhum lugar

@Id @SequenceGenerator(name = "acao_seq", sequenceName = "acao_id_seq", allocationSize = 1, initialValue = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "acao_seq") @Basic(optional = false) @Column(name = "id", nullable = false)

davilima81

wellington.nogueira:
davilima81:
Por que tenho que utilizar “” para usar tabelas ou sequences no PostgreSQL? :shock:

Vejam um exemplo:

@Entity
@Table(name = ““UNI_UNIDADE””)
@SequenceGenerator(name = “seqUnidade”, sequenceName = ““SEQ_UNIDADE””, allocationSize = 1)

Estou preocupado com a mudança do Banco caso o Sistema cresça demasiadamente, pois já testei com Oracle e SQL Server e não foi necessário utilizar “”.


A barra não está aí por causa do postgre mas por causa de você estar utilizando aspas na String. Isso faz o java identificar que o caractere faz parte da String e não da notação do Java.

Veja a diferença abaixo:

String t = ""Teste""; //Sem a barra, há duas strings vazias e, entre elas a palavra Teste que não representa nada.
String t = "\"Teste\""; //Com a barras, você tem a string "Teste" (incluindo as aspas).

Só complementando: possivelmente isso não gere erro em outros SGBDs.

Eu já testei usando o exemplo abaixo e não Funfa no PostgreSQL somente funcionou no SQL Server 2011 Codinome “Denali” e Oracle 10g.

@Entity
@Table(name = “USU_USUARIO”)
@SequenceGenerator(name = “seqUsuario”, sequenceName = “SEQ_USUARIO”, allocationSize = 1)

Grato pelo retorno

davilima81

davilima81:
Por que tenho que utilizar “” para usar tabelas ou sequences no PostgreSQL? :shock:

Vejam um exemplo:

@Entity
@Table(name = ““UNI_UNIDADE””)
@SequenceGenerator(name = “seqUnidade”, sequenceName = ““SEQ_UNIDADE””, allocationSize = 1)

Estou preocupado com a mudança do Banco caso o Sistema cresça demasiadamente, pois já testei com Oracle e SQL Server e não foi necessário utilizar “”.

Se eu não utilizar “” Olha só o que acontece

select
btpusuario0_.USU_SEQ_USUARIO as col_0_0_,
btpusuario0_.USU_NOME_USUARIO as col_1_0_,
btpusuario0_.USU_SITUACAO_USUARIO as col_2_0_,
btpusuario0_.USU_LOGIN_USUARIO as col_3_0_,
btpusuario0_.USU_SENHA_USUARIO as col_4_0_,
btpusuario0_.USU_GRUPO_USUARIO as col_5_0_,
btpusuario0_.USU_DATA_CADASTRO_USUARIO as col_6_0_,
btpusuario0_.USU_DATA_EXPIRA_SENHA_USUARIO as col_7_0_
from
USU_USUARIO btpusuario0_
where
btpusuario0_.USU_LOGIN_USUARIO=?
and btpusuario0_.USU_SENHA_USUARIO=?
10:14:34,166 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: 42P01
10:14:34,166 ERROR [JDBCExceptionReporter] ERRO: relação “usu_usuario” não existe

E utilizo o Dialeto org.hibernate.dialect.PostgreSQLDialect no meu persistence.xml :shock:

leonardobhbr

Amigo ja sei o que aconteceu, o postgres por padrão é case insensitive que significa

ao vc criar uma tabela exemplo Cliente ele ficara no banco como cliente e voce pode pesquisar de qualquer jeito a tabela ClIeNte que vai funcionar,
o problema que voce criou a tabela com aspas " fazendo o postgres aceitar apenas comandos case sensitive por isso a barra "

davilima81

leonardobhbr:
Amigo ja sei o que aconteceu, o postgres por padrão é case insensitive que significa

ao vc criar uma tabela exemplo Cliente ele ficara no banco como cliente e voce pode pesquisar de qualquer jeito a tabela ClIeNte que vai funcionar,
o problema que voce criou a tabela com aspas " fazendo o postgres aceitar apenas comandos case sensitive por isso a barra "

Beleza!!! :smiley:
Isso Mesmo, Funfou Perfeitamente!!!
Obrigado Fera pelo retorno

WellingtonRamos

davilima81:
Por que tenho que utilizar “” para usar tabelas ou sequences no PostgreSQL? :shock:

Vejam um exemplo:

@Entity
@Table(name = ““UNI_UNIDADE””)
@SequenceGenerator(name = “seqUnidade”, sequenceName = ““SEQ_UNIDADE””, allocationSize = 1)

Estou preocupado com a mudança do Banco caso o Sistema cresça demasiadamente, pois já testei com Oracle e SQL Server e não foi necessário utilizar “”.


A barra não está aí por causa do postgre mas por causa de você estar utilizando aspas na String. Isso faz o java identificar que o caractere faz parte da String e não da notação do Java.

Veja a diferença abaixo:

String t = ""Teste""; //Sem a barra, há duas strings vazias e, entre elas a palavra Teste que não representa nada.
String t = "\"Teste\""; //Com a barras, você tem a string "Teste" (incluindo as aspas).

Só complementando: possivelmente isso não gere erro em outros SGBDs.

Criado 3 de outubro de 2011
Ultima resposta 3 de out. de 2011
Respostas 6
Participantes 3