2016-12-17 24 views
1

我正在使用Spring Data,我得到這個異常,我不明白爲什麼。註解@Column包javax.persistence在使用彈簧數據時出錯

域中的dataCadastro字段是數據庫中唯一名稱不同的字段。在該鹼是作爲datacad

public interface IRepositorioUsuario extends CrudRepository<Usuario, Long> { 

} 

服務

@Stateless 
public class UsuarioService { 

    @Inject 
    IRepositorioUsuario usuarioRepositorio; 

    public void buscar() { 
     usuarioRepositorio.findAll().forEach(u -> System.out.println(u.getNome())); 
    } 

} 

@Entity 
@Table(name="TUSUARIO") 
public class Usuario implements Serializable { 

    private static final long serialVersionUID = -5427866189669150032L; 

    private Long codigo; 
    private String nome; 
    private String login; 
    private String senha; 
    @Column(name="datacad") // query error..... 
    private Date datacadastro; 
    private Boolean situacao; 

    @Id 
    public Long getCodigo() { 
     return codigo; 
    } 
    public void setCodigo(Long codigo) { 
     this.codigo = codigo; 
    } 
    public String getNome() { 
     return nome; 
    } 
    public void setNome(String nome) { 
     this.nome = nome; 
    } 
    public String getLogin() { 
     return login; 
    } 
    public void setLogin(String login) { 
     this.login = login; 
    } 
    public String getSenha() { 
     return senha; 
    } 
    public void setSenha(String senha) { 
     this.senha = senha; 
    }  
    public Date getDatacadastro() { 
     return datacadastro; 
    } 
    public void setDatacadastro(Date datacadastro) { 
     this.datacadastro = datacadastro; 
    } 
    public Boolean getSituacao() { 
     return situacao; 
    } 
    public void setSituacao(Boolean situacao) { 
     this.situacao = situacao; 
    } 

// Omitting hasCode 

錯誤查詢

SQL Error: 1054, SQLState: 42S22 
Unknown column 'usuario0_.datacadastro' in 'field list' 

select 
     usuario0_.codigo as codigo1_0_, 
     usuario0_.datacadastro as datacada2_0_, 
     usuario0_.login as login3_0_, 
     usuario0_.nome as nome4_0_, 
     usuario0_.senha as senha5_0_, 
     usuario0_.situacao as situacao6_0_ 

    from TUSUARIO usuario0_ 

隨着getDataCadastro

Seccess註釋@Column(名稱= datacad)

select 
     usuario0_.codigo as codigo1_0_, 
     usuario0_.datacad as datacad2_0_, 
     usuario0_.login as login3_0_, 
     usuario0_.nome as nome4_0_, 
     usuario0_.senha as senha5_0_, 
     usuario0_.situacao as situacao6_0_ 

    from TUSUARIO usuario0_ 
+0

什麼是你的彈簧數據操作?將其包含在你的問題中。 –

+0

謝謝大衛。但同樣的問題發生 – EdeGerSil

+0

使用getDatacadastro或將datacadastro更改爲dataCadastro。 –

回答

2

這是因爲你正在使用@Id註釋getter方法。因此,jpa僅查看getters來派生列名並忽略字段上的@column註釋,但在將它放在getter上時開始工作。

作爲練習,您可以將Id註釋移動到字段級別,並應該再次看到它的工作。

建議在現場級別或getter上放置jpa註釋。但不要混合

+0

謝謝Madhusudana Reddy Sunnapu。他現在表演成功了,這是一個學徒不知道的事情。謝謝! – EdeGerSil

+0

謝謝Surace – EdeGerSil