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

如果调用类使用lombok@data注释,则hibernate 4.x无法加载超类实体列名

庄宇
2023-03-14

嗨,我正在使用lombok api,它的实体类具有@Data注释,扩展了audit类(common columns),后者是具有@MappedSuperClass注释的简单抽象类。但是当hibernate-jpa加载时,它不是获取列名,而是获取实际的成员变量名。

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "TEST_TYPES", schema = "TESTER")
@EqualsAndHashCode(callSuper = false, of = {"id"})
public class TestEntity extends AuditEntity {
    @Id
    @Column(name = "TYPE_ID")
    private Short id;

    @Column(name = "NAME")
    private String name;    
}


    @MappedSuperclass
public abstract class AuditEntity implements Serializable {
    private static final long serialVersionUID = 3487394229267512541L;
    private String createdBy;
    private Date createdDate;

    @Column(name = "CREATE_ID", length = 40)
    public String getCreatedBy() {
        return this.createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CREATED_DATE", length = 7)
    public Date getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

我很感激任何建议/帮助。

共有1个答案

柳宪
2023-03-14

这可能与JPA的命名策略有关。设置属性

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

应该采用您提供的实际列名。

 类似资料:
  • 问题内容: 在我不使用Spring的项目中,我仅使用Hibernate。我不想将hbm.xml文件用于实体映射/描述/等。我只想使用注释。 如何告诉Hibernate 从某些包中加载所有带注释的类? 我在网上搜索,但没有运气。我也找不到有关最新的Hibernate版本的信息(大多数是过时的文章/帖子/等)。 编辑1: http://docs.jboss.org/hibernate/orm/4.3/

  • 问题内容: 在我从事的项目中,我不使用Spring,而仅使用Hibernate。我不想将hbm.xml文件用于实体映射/描述/等。我只想使用注释。 如何告诉Hibernate 从某些包中加载所有带注释的类? 我在网上搜索,但没有运气。我也找不到有关最新的Hibernate版本的信息(大多是过时的文章/帖子/等)。 编辑1: http://docs.jboss.org/hibernate/orm/4

  • 下面是我的代码, 我无法用注释来注释类, Netbean IDE说注释类型不适用于这种声明。 我用netbeans运行JDK 1.6和Jaxb 1.5。 感谢您的任何帮助。

  • 我有一把刀: 问题是,当我试图使用DAO进行加载调用时,使用DynamoDBMapper以field d1作为哈希键来获取项目,它会抛出一个DynamoDBExc0019,说:为公共DAO. getField2()找到了空键,但实际上表的值对应于field d2。问题,这是因为Lombok注释而不是手动突变代码,还是一般来说我们一起使用Lombok和DynamoDBAnnotions?

  • 我有以下课程: 为什么我无法在抽象类(< code>Parent)的实例上调用< code>toBuilder(),如下面的代码所示?

  • 我想在我的片段(HomeFragment)中注入一个依赖项(HomeViewModel)。 我有一个类(HomeViewModelImpl)实现了该抽象(HomeViewModel),在这个类中,我当然覆盖了父级的方法。 抽象类(HomeViewModel)是从BaseViewModel扩展而来的抽象类。 BaseViewModel是一个普通的开放类,它从Android生命周期组件的ViewMod