我决定在本周末使用注释来玩hibernate并遇到一个有趣的问题,我希望你们都可以帮忙。我遇到的问题是,当我尝试使用ManyToOne关系时,创建的模式不正确。
我有两类注释。 User类和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
}
当我有hibernate生成模式时,这里是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,这是我的hibernate 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>
答案 0 :(得分:0)
看起来我必须让我的方言有点不正确。以下似乎解决了这个问题
org.hibernate.dialect.MySQLDialect