我的复合主键中的列排序有问题。我有一个包含以下内容的表:
@Embeddable
public class MessageInfo implements Serializable {
private byte loc;
private long epochtime;
@Column(name = "loc")
public byte getLoc() {
return loc;
}
@Column(name = "epochtime")
public long getEpochtime() {
return epochtime;
}
}
它用于此映射:
@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class AbstractMessage implements Message {
private MessageInfo info;
private int blah;
@EmbeddedId
public MessageInfo getInfo() {
return info;
}
}
当我使用具体的 @Table 类对 AbstractMessage 进行子类化时,休眠会创建没有错误的数据库和表。问题是休眠正在生成复合主键,其中列的顺序与我想要的相反。
CREATE TABLE `mydb`.`concrete_table` (
`epochtime` bigint(20) NOT NULL,
`loc` tinyint(4) NOT NULL,
`blah` smallint(6) DEFAULT NULL,
`foo` smallint(6) DEFAULT NULL,
PRIMARY KEY (`epochtime`,`loc`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我希望主键是
PRIMARY KEY (`loc`,`epochtime`)
因为我知道我最多会有 10 个 loc,但每个 loc 有很多 epochtime。
任何帮助将不胜感激 =)