繁体   English   中英

使用mysql自动休眠时生成表的SQL错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM