Hibernate:缺少列数

时间:2013-11-06 11:58:48

标签: java hibernate jpa hbm2ddl

这是我的实体:

@Entity
@Table(name="log_shop")
public class LogShop {

    @Id
    @GeneratedValue
    private int id;

    private String platform;

    @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
    private DateTime logged;

    @ManyToOne
    private Player player;

    private String type;

    @Column(name="type_value")
    private String typeValue;

    @Column(name="shop_source")
    private String shopSource;

    @Column(name="buy_confirm")
    @Type(type="org.hibernate.type.NumericBooleanType")
    private boolean buyConfirm;

    @Column(name="buy_yes")
    @Type(type="org.hibernate.type.NumericBooleanType")
    private boolean buyYes;

    @Column(name="not_enough_coins")
    @Type(type="org.hibernate.type.NumericBooleanType")
    private boolean notEnoughCoins;

    @Column(name="not_enough_coins_yes")
    @Type(type="org.hibernate.type.NumericBooleanType")
    private boolean notEnoughCoinsYes;

    LogShop() {}

    public LogShop(String platform, DateTime logged, Player player, String type, String typeValue, String shopSource, boolean buyConfirm, boolean buyYes,
            boolean notEnoughCoins, boolean notEnoughCoinsYes) {
        this.platform = platform;
        this.logged = logged;
        this.player = player;
        this.type = type;
        this.typeValue = typeValue;
        this.shopSource = shopSource;
        this.buyConfirm = buyConfirm;
        this.buyYes = buyYes;
        this.notEnoughCoins = notEnoughCoins;
        this.notEnoughCoinsYes = notEnoughCoinsYes;
    }

}

启动时,Hibernate(使用hbm2ddl validate)会抱怨org.hibernate.HibernateException: Missing column: count in xxxxx.log_shop

但是正如您所看到的,实体类中没有引用名为count的列。为什么Hibernate要求它出现在数据库中?

如需完整参考,请参阅表格:

CREATE TABLE `log_shop` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `platform` varchar(26) NOT NULL DEFAULT 'web',
  `logged` datetime NOT NULL,
  `player_id` int(11) NOT NULL,
  `type` varchar(26) NOT NULL,
  `type_value` varchar(26) NOT NULL,
  `shop_source` varchar(26) NOT NULL,
  `buy_confirm` int(1) NOT NULL,
  `buy_yes` int(1) NOT NULL,
  `not_enough_coins` int(1) NOT NULL,
  `not_enough_coins_yes` int(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

1 个答案:

答案 0 :(得分:1)

嗯,那太愚蠢了...... 事实证明我偶然将@Table(name="log_shop")应用于另一个实体类,它确实引用了count列。

尽管Hibernate提到了哪个类和字段,但它会很好。