gpt4 book ai didi

mysql - 为什么我不能在 jpa 中定义一个名为 "index"的列?

转载 作者:行者123 更新时间:2023-11-29 04:09:04 24 4
gpt4 key购买 nike

我使用 jpa 将对象持久化到 mysql 数据库。

当我像下面这样定义一个名为“index”的列时,该表将不会在数据库中生成。

当我删除它或重命名它时,jpa 工作正常。

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import play.db.jpa.GenericModel;

@Entity
@Table(name="QA_ASSETVM")
public class QAAssetVM extends GenericModel{

private static final long serialVersionUID = 1L;

@Id
@Column(name="vmassetname")
public String vmassetname;

@Column(name="assetvm_index") //this works fine!
public int index;
/*
@Column(name="index") //When I add this, the table "QA_ASSETVM" will not be generated by jpa in database.
public int index;
*/
}

最佳答案

正如 Hannibal 所指出的,index 是 MySQL 中的保留关键字,因此您不能直接将其用作列名,但您必须将其转义。

  1. 如果您使用的是 Hibernate 3.5+,请尝试使用 hibernate.globally_quoted_identifiers=true,它将引用所有数据库标识符(来源:Automatic reserved word escaping for Hibernate tables and columns)
  2. 在 JPA 2.0 中,您可以使用注释:@Column(name="\"index\""),这是转义单个列的新标准化方法

关于mysql - 为什么我不能在 jpa 中定义一个名为 "index"的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com