gpt4 book ai didi

java - 注解@Column包javax.persistence在使用spring data时出错

转载 作者:行者123 更新时间:2023-11-30 02:42:36 26 4
gpt4 key购买 nike

我正在使用 Spring Data,但遇到了这个异常,但我不明白为什么。

域中的 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 中使用注释@Column(name = 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_

最佳答案

这是因为您在 getter 方法上使用了 @Id 注解。因此,jpa 仅查看 getter 来派生列名称,并忽略字段上的 @column 注释,但当您将其放在 getter 上时开始工作。

作为练习,您可以将 Id 注释移至字段级别,并且应该会看到它再次工作。

建议将 jpa 注释放置在字段级别或 getter 级别。但不要混合

关于java - 注解@Column包javax.persistence在使用spring data时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com