当前位置: 首页 > 知识库问答 >
问题:

使用记录器时出现Hibernate映射异常

寿意远
2023-03-14

我有一个奇怪的错误:我有一个使用Hibernate的注释类。一切都很好,直到我开始这样介绍日志:

@Entity
@Table(name = "GROUP_TABLE")
public class Group {
    private static final Logger logger = LoggerFactory.getLogger(Group.class);  

产生的错误是:

[错误]原因:org。冬眠MappingException:无法确定组织的类型。slf4j。Logger,位于table:container,用于列:[org.hibernate.mapping.Column(Logger)]

根据我的理解,在这种情况下,静态场应该是合适的。那么为什么hibernate要创建一个列“logger”?

我的依赖项是log4j 1.2.17、slf4j api 1.7.7和slf4j-log4j12-1.7.7。

谢谢

共有1个答案

秦英发
2023-03-14

由于类同时被注释为@实体@表,因此Hibernate假定所有字段(不考虑修饰符)都映射到数据库列。

HiberNate不关心你的字段是静态还是最终(这是Java构造),它只关心它不能将字段值映射到数据库列。将记录器标记为@瞬态,HiberNate将忽略它。

 类似资料:
  • 我有两个实体类,如下所示- 我在保存子记录时出错。 错误- Hibernate:插入子(名称,child\u id)值(?,)2022-07-19 23:12:31.727警告20940---[nio-8080-exec-2]o.h.engine.jdbc.spi。SqlExceptionHelper:SQL错误:0,SQLState:23502 2022-07-19 23:12:31.727错误

  • 我的代码很简单,就像 我如何验证Scala的映射以检查它是否为空?

  • 是否强制将我的外键实体从ClassA映射到ClassB中的主实体?

  • 我认为错误并不在注释中,因为我更改了几次注释,仍然得到了相同的异常。

  • 我想实现我自己的并使用Mapstruct将记录映射到POJO。我不太明白如何完成这一点。我遵循了这部分文档:https://www.jooq.org/doc/3.13/manual/sql-execution/fetching/pojos-with-recordmapper-provider/ 我的映射器看起来像这样: 问题是,作为我实际上并没有得到,而是我的语言表中的,因此无法将转换为。知道我需

  • 我有两个表,asdf和qwer,两个表都有一个名为“id”的主键。当我连接这两个表时,结果将有两个名为id的列,而JOOQ无法将记录正确映射到pojo。 现在,每个Asdf实例都与元组中对应的Qwer实例具有相同的id。 有没有聪明的别名技巧可以解决这个问题,或者我在JOOQ文档中遗漏了什么,或者这是JOOQ中的一个bug?