Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate@namedquerys与保留字_Java_Hibernate_Reserved Words - Fatal编程技术网

Java Hibernate@namedquerys与保留字

Java Hibernate@namedquerys与保留字,java,hibernate,reserved-words,Java,Hibernate,Reserved Words,我对hibernate@namedquerys有问题。我有一个表SCP_PMAT,列名为“group”。在映射中,这不是问题。我用括号来解决这个问题 public class ScpPmat{ @Column(name = "[group]") private String group; } 但是当我想使用@NamedQuery时,有一个问题。如何将列名写入查询 @NamedQuery(name = "readScpPmatByGroup", query = "FROM Scp

我对hibernate@namedquerys有问题。我有一个表SCP_PMAT,列名为“group”。在映射中,这不是问题。我用括号来解决这个问题

public class ScpPmat{
    @Column(name = "[group]")
    private String group;
}
但是当我想使用@NamedQuery时,有一个问题。如何将列名写入查询

@NamedQuery(name = "readScpPmatByGroup",
query = "FROM ScpPmat where group = :group")
希望这个代码足够了。
谢谢

您可以将保留字用引号括起来:

query = "FROM ScpPmat where \"group\" =:group")

最佳选项:将列的名称更改为非保留字。这样做通常是不好的做法,并且可能会导致Java代码和SQL方面的问题,正如您所经历的那样


另一种选择是将Java字段名从保留字更改为非保留字,如
groupCol

如果答案令人满意,请不要忘记接受答案。我尝试了这一点,但命名查询中出现异常
错误:readScpPmatByGroup org.hibernate.QueryException:意外字符:“”[来自core.dao.ScpPmat,其中“group”=:group]
我也用括号试过了…但同样的例外…-/当然,这是最好的。让我们和我们的数据库“专家”谈谈