Hibernate + Sql Server 2005: campos null

Aqui no trabalho usam o Sql Server 2005 :frowning:
Eu estou usando o hibernate para criar as tabelas e estaria tudo perfeito, se não fosse por uma coisa.

Ele não está criando alguns atributos como Not Null.
Todos os atributos, fora chaves primarias, ele cria como Null.

Qd troco o banco para Mysql ele cria tudo certo !

O problema éq tenho q usar o SQL Server.

Alguém sabe oq pode ser ?

Veja se não é o seu driver.

Pior q não sei como ver isso.
Acredito q estou usando a melhor opção de driver.

Estou usando o seguinte:

<property name="hibernate.dialect" value = "org.hibernate.dialect.SQLServerDialect"/>  
<property name="hibernate.connection.driver_class" value = "net.sourceforge.jtds.jdbc.Driver"/>

Como você está usando o hibernate para criar suas tabelas?

Voce cria suas tabelas usando a propria anotacao do Hibernate ? se sim, veja onde tem @Column e onde voce quer que nao receba nulo, ponha dentro dos parentese isso:

nullable = false

exemplo:

@Column(name = “nome”, nullable = false) // To falando que essa coluna recebe o ‘nome’ de NOME e nao aceita valores nulos.

Mas é exatamente isso q faço.

Olha como está aqui.

@Column(nullable = false)
private String email;

Tanto q o mesmo codigo funciona corretamente no Mysql.

E quando você tenta criar na mão, fazer a tabela por SQL e não pelo hibernate? Dá certo? Tenta, quem sabe pode não ser o hibernate, uma vez que para o MySQL resolve.

Sim, funciona…
Acabei de fazer pra testar.

Deve ser alguma incompatibilidade na versão do sql server.
Pode ser mesmo o driver, mas nem sei se existe outro pra Sql server.

Existe!, da uma googlada que voce encontra, precisei resolver uma bronca uma vez e tive que usar outro driver, mas nem lembro mais o link. Boa Sorte.

Não acredito muito nisso, porque utilizamos o jtds para criar o nosso banco de dados em SQL Server 2008, mas seria interessante atualizar o seu jtds para a versão mais nova, que possui correção de bugs. Mas tudo pode acontecer, sempre é bom testar.

Vlw ! Vou procurar aqui.

Se quiser testar o driver é este http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx .
Eu ainda acredito mais no jtds, ele possui maior compatibilidade com blob que o próprio driver da Microsoft, brincadeira!
Fica o link do JTDS também http://sourceforge.net/projects/jtds/files/ .
Boa sorte!

Pois eh.
É exatamente o JTDS q estou usando.
estava usando a versão 1.2.4 e mudei agora pra 1.3.0

Startei o sistema como validate e ele não deu erro nenhum, mas no atributo da classe tem um nullable = false e o banco está como nullable = true :lol:

Vlw a ajuda !!

Nada então? :frowning:

Por enquanto não…
Vou fazer direto no banco mesmo, por enquanto.

:cry:

Um exemplo de como mapeamos para criar nossas tabelas no banco de dados e está tudo normal, o squirrel identifica o campo como não nulo. Tem que tomar atenção a isso também, o campo sendo chave não pode ser nulo, mas como o problema são os outros campos, tem que ver…

[code]public class UsuarioModel implements Serializable{
@Id
@GeneratedValue
@Column(name=“codigo”)
private Integer codigo;

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns(
		{	
			@JoinColumn(name="pessoa_codigo", referencedColumnName="codigo", insertable=false, updatable=false),
			@JoinColumn(name="grupoEmpresa_codigo",referencedColumnName="grupoEmpresa_codigo", insertable=false, updatable=false)
		}
)
@NotFound(action=NotFoundAction.IGNORE)
private PessoaModel pessoaModel;[/code]

Algo que lembrei, você já atualizou o seu hibernate? Pode ser bug do hibernate para o SqlServer, afinal de contas para cada banco a implementação que é realizada por eles é diferenciada, pode ser um bug a ser aberto para o grupo Jboss, tente atualizar, se não funcionar, resta abrir um chamado para eles.