Hibernate

时间:2016-03-30 00:03:54

标签: java mysql hibernate

有人知道为什么Hibernate生成的SQL查询错了吗?我尝试使用实体中的hibernate.hbm2ddl.auto = create-dropcolumnDefinition来自动创建一个表来设置默认值。当我运行程序时,我收到了这个错误:

You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near '`varchar(100) default '-'`, 
`last_name` varchar(100), primary key (`id' 

以下是生成的SQL查询:

create table `user` (
    `id` bigint not null auto_increment, 
    `first_name` `varchar(100) default '-'`,
    `last_name` varchar(64), 
    primary key (`system_id`)
)

当然这是错误的,Hibernate在实体中添加了一个刻度字符(`)来翻译columnDefinition,这里是实体类:

@Entity
@Table(name = UserEntity.TABLE_NAME)
public class UserEntity implements Serializable {

    public static final String TABLE_NAME = "user";

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @Column(name = "first_name", columnDefinition="varchar(100) default '-'")
    private String firstName;

    @Column(name = "last_name", length = 100)
    private String lastName;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

maven中的缺点:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.30</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.6.10.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.6.10.Final</version>
    </dependency>

如果有人遇到同样的问题并获得解决方案,请告诉我。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

评论上的链接帮助了我。问题出在我的hibernate配置中,删除此行修复它。

<property name="hibernate.globally_quoted_identifiers">true</property>