[英]SQL for table creation incorrect when autogenerating using hibernate with mysql
我决定在本周末使用注释使用休眠模式,并且遇到了一个有趣的问题,希望大家能提供帮助。 我遇到的问题是,当我尝试使用ManyToOne关系时,创建的架构不正确。
我有两类笔记。 用户类和CourseTaken类。 用户可以选择任意数量的课程。 代码如下。
@Entity
@Table(name = "course_taken")
public class CourseTaken {
@Id
@GeneratedValue
@Column(name = "course_id", columnDefinition = "INT NOT NULL AUTO_INCREMENT")
private int id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
...getters/setters
}
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", columnDefinition = "INT NOT NULL AUTO_INCREMENT")
private int id;
@OneToMany(mappedBy = "user")
private Set<CourseTaken> coursesTaken = new HashSet<CourseTaken>();
...getters/setters
}
当我休眠生成模式时,这是Course_taken表的创建语句:
create table course_taken (course_id INT NOT NULL AUTO_INCREMENT not null, courseID integer not null, user_id INT NOT NULL AUTO_INCREMENT, primary key (course_id))
我尝试使用@OneToMany
注释时,Hibernate似乎非常困惑。 有任何想法吗?
我玩过各种配置:org.hibernate.dialect。
org.hibernate.dialect.MySQL5Dialect
org.hibernate.dialect.MySQLDialect
org.hibernate.dialect.MySQL5
我正在使用maven,这是我的休眠pom依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-osgi</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-proxool</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-infinispan</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
看来我的方言一定不正确。 以下似乎解决了这个问题
org.hibernate.dialect.MySQLDialect
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.