basic13 2010-08-04 22:38
浏览 238
已采纳

为什么我用hibernate建表会出现如此诡异的情况?

最近在学着用anotation配置hibernate,结果发现一些诡异的情况……
实体类:
[code="java"]
ackage com.yyz.beans;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "score")
public class Score {
private int sId;
private Course cou;
private Student stu;
private double score;

@Id
@GeneratedValue
public int getsId() {
    return sId;
}

public void setsId(int sId) {
    this.sId = sId;
}

public Score(Student s1, Course c1, double i) {
    this.stu=s1;
    this.cou=c1;
    this.score=i;
}

@ManyToOne
@JoinColumn(name = "course_id")
public Course getCou() {
    return cou;
}

public void setCou(Course cou) {
    this.cou = cou;
}

@ManyToOne
@JoinColumn(name = "student_id")
public Student getStu() {
    return stu;
}

public void setStu(Student stu) {
    this.stu = stu;
}

public double getScore() {
    return score;
}

public void setScore(double score) {
    this.score = score;
}

}

[/code]

然后我让hibernate自动帮我生成表,结果它给我来了这么个建表语句:
[code="sql"]
22:37:41,130 DEBUG SchemaExport:377 -
create table score (
sId integer not null,
score double precision not null,
course_id integer,
student_id integer not null auto_increment,
primary key (student_id, course_id)
)
[/code]
明显我指定的主键是sid,为什么生成的建表语句里course_id和student_id为联合主键呢?
明显我设置了sid为自增长,为什么生成的建表语句里student_id成了自增长字段呢?

  • 写回答

1条回答 默认 最新

  • cuiran 博客专家认证 2010-08-05 09:29
    关注

    你是不是还有其他的表和这个表有关系.单独的话 应该不会这样.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?