hibernate关于@Id位置不正确导致的系统启动出错的问题

来源:互联网 发布:sql 表中复制数据 编辑:程序博客网 时间:2024/05/29 16:56

有一个Entity (A)需要通过 OneToMany 映射一个List <B>

类A

    private int id;    private String name;    private int status;    private Timestamp createTime;    private Timestamp modifyTime;    @OneToMany(cascade = CascadeType.PERSIST, fetch=FetchType.LAZY)    @JoinTable(name = "pay_channelcategory", joinColumns = {@JoinColumn(name = "serviceId")},            inverseJoinColumns = {@JoinColumn(name = "categoryId")})    private List<PayCategory> payCategories;    public List<PayCategory> getPayCategories() {        return payCategories;    }    public void setPayCategories(List<PayCategory> payCategories) {        this.payCategories = payCategories;    }    @Id    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }
启动时直接报错 Could not determine type for: java.util.List, at table: pay_service_provider, for columns: [org.hibernate.mapping.Column(payCategories)]
一开始以为是List导致了,改成Set后依旧,但是前几天配置的一个一对多明明没有问题呀

翻开前几天配置的那个类.,发现唯一的区别在于

    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Integer id;

这个@ID是注解在id这个field上的,而我原来的@Id是注解在get上的,在测试了是否是因为@GenerateValue ,@Id这两个个注解导致之后
 @GeneratedValue(strategy = GenerationType.IDENTITY)


可以断定是由于@Id没有放在field上导致的这个错误, IDEA中hibernate 实体映射工具默认情况是直接把@Id加在主键的get方法上的,而我自己配置关联关系时,把注解放在了field上, 规定是同一个实体类,注解要么只放在field上,要么只放在get方法上



阅读全文
0 0
原创粉丝点击