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

问题描述

最近在学着用anotation配置hibernate,结果发现一些诡异的情况……实体类: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@GeneratedValuepublic 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;}}然后我让hibernate自动帮我生成表,结果它给我来了这么个建表语句: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) )明显我指定的主键是sid,为什么生成的建表语句里course_id和student_id为联合主键呢?明显我设置了sid为自增长,为什么生成的建表语句里student_id成了自增长字段呢? 问题补充:cuiran 写道

解决方案

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

时间: 2024-09-20 00:16:18

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

hibernate建表-Table 'hibernate.address' doesn't exist

问题描述 Table 'hibernate.address' doesn't exist User 配置文件 Address 配置文件 //下面是异常代码 Hibernate: insert into ADDRESS (ADDRESSINFO) values (?) org.hibernate.exception.SQLGrammarException: could not insert: [cn.vin.domain.Address] at org.hibernate.exception.SQ

mysql-测试hibernate框架自动建表并保存数据,没报错,但数据只保存了一部分

问题描述 测试hibernate框架自动建表并保存数据,没报错,但数据只保存了一部分 解决方案 因为你去给Product这个对象创建三个实例,pro.pro2.pro3,对吧,然后你不停的给pro去赋值(pro.setName()),最后pro的最后一个值把前两个覆盖掉了,所以只添加了一个棉花糖.正确的方式是要给每个,你把第29行改成pro2.setName():30行pro2.setDir():33行pro3.setName():34行pro3.setDir(),就万事大吉了,祝你成功! 解决

hibernate注解建表问题

问题描述 学习hibernate注解建表的时候出现的问题packagedemo.annotations.entity;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;@Entitypublicclassweapon{

hibernate自动建表到数据库及spring下自动建表到数据库

Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<property name="hbm2ddl.auto">update</property>     update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:

spring-Hibernate+Spring整合后自动建表问题

问题描述 Hibernate+Spring整合后自动建表问题 我测试了一个项目,初期没有问题,但是当我修改了自动生成的数据信息后发现,重新部署后数据仍然为原来的信息,接着我尝试了修改表名,重新部署后表名也和原来一样. 以下是配置信息: Hibernate: <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="jdbc.batc

java web-Hibernate根据注解自动建表,有的表新建出错是什么原因

问题描述 Hibernate根据注解自动建表,有的表新建出错是什么原因 项目是自己的毕业设计,当时是没什么问题,但是时过几个月,现在重新运行,发现有两张表始终无法新建, 那好吧,我自己手动建,但是此时我的hbm2ddl.auto=update,当启动tomcat,update到这张表的时候,tomcat直接卡在这里,然后就提示超时了,不知道是什么原因 Hibernate相关属性配置 dataSource.driverClassName=oracle.jdbc.driver.OracleDrive

mysql-免安装MYSQ 不设置环境变量 怎么通过Bat导入建表SQL

问题描述 免安装MYSQ 不设置环境变量 怎么通过Bat导入建表SQL @@echo off set /p errorlevel=0 set /p path_home_mysql=G:JTMmysql/* MySQL安装的BIN目录 (双引号不能少) 特别是注意空格 */set /p path_bin_mysql=""G:JTMmysqlbinmysqldump.exe"" echo %path_bin_mysql%/* 服务器IP地址 /set /p databa

直接从SQL语句问题贴子数据建表并生成建表语句的存储过程

存储过程|数据|问题|语句 下面的存储过程,可帮你在回答SQL语句问题时,直接从贴子的样本数据建表并生成建表语句,省去大量的手工输入数据的工作. /*Create Table from your web page data* 2004-JAN-1, OpenVMS,V0.1* 2004-JAN-2, V0.5, add tab & blank values logical * 2004-JAN-3, V1.0, add SQL Statement generation * 2004-JAN-4,

如何查看Oracle数据表的建表语句

oracle|数据|语句 如何查看Oracle数据表的建表语句? 系统环境:  1.操作系统:Windows 2000 Server,机器内存128M 2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版 3.安装路径:C:\ORACLE 实现步骤:  1.用EXP工具导出 2.导入时使用show=y选项.log选项 3.查看.编辑日志文件 具体实例:  1.调出SQL*Plus conn system/manager grant connect,resource to