有人知道为什么Hibernate生成的SQL查询错了吗?我尝试使用实体中的hibernate.hbm2ddl.auto
= create-drop
和columnDefinition
来自动创建一个表来设置默认值。当我运行程序时,我收到了这个错误:
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>
如果有人遇到同样的问题并获得解决方案,请告诉我。谢谢你的帮助。
答案 0 :(得分:0)
评论上的链接帮助了我。问题出在我的hibernate配置中,删除此行修复它。
<property name="hibernate.globally_quoted_identifiers">true</property>