首页 > 解决方案 > 公式不能转换为类 org.hibernate.mapping.Column

问题描述

我正在尝试为旧数据库表编写 @ManyToOne 和 @OnoToMany 关系。这些表没有专用的外键和主键 id 列,而是使用两列连接数据。

如何使用 access`s userId 加入客户 ID(连接 id1 和 id2)?我也试过@JoinColumnsOrFormulas,但它失败了。

@Entity
public class Access {

   private String userId;
      

   @ManyToOne
//    @JoinColumnsOrFormulas({
//            @JoinColumnOrFormula(column = @JoinColumn(name = "user_id")),
//            @JoinColumnOrFormula(formula = @JoinFormula("concat(id1, id2)"))
//    })
   @JoinFormula("(SELECT c.id FROM Customer c WHERE c.id1 || c.id2 = userId)")
   private Customer customer;
}
@Entity
public class Customer {

 private Long id;

 private String id1;

​ private String id12;
 
 @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
 private Set<Access> accesses;

当应用程序启动时,它会抛出这个异常:

Caused by: java.lang.ClassCastException: class org.hibernate.mapping.Formula cannot be cast to class org.hibernate.mapping.Column (org.hibernate.mapping.Formula and org.hibernate.mapping.Column are in unnamed module of loader 'app')

预先感谢

标签: javahibernateormspring-data-jpa

解决方案


推荐阅读