【发布时间】:2011-12-29 16:18:57
【问题描述】:
我的复合主键中的列排序有问题。我有一个包含以下内容的表:
@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 进行子类化时,hibernate 会创建没有错误的数据库和表。问题是hibernate正在生成复合主键,其中列的顺序与我想要的相反。
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。
任何帮助将不胜感激 =)
【问题讨论】:
标签: mysql hibernate jpa composite-primary-key