Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
OpenJPA-扩展PersistenceMappingDefaults以将大小写转换为下划线_Jpa_Openjpa - Fatal编程技术网

OpenJPA-扩展PersistenceMappingDefaults以将大小写转换为下划线

OpenJPA-扩展PersistenceMappingDefaults以将大小写转换为下划线,jpa,openjpa,Jpa,Openjpa,请注意,openjpa在每列后面都加了“5”。不知道这是从哪里来的。生成的FOO_文件的DDL为: org.apache.openjpa.lib.jdbc.ReportingSQLException: Column not found: VERSION5 in statement [INSERT INTO FOO_FILE (file_id, VERSION5, DATETIME05, FILE_NAME5, INPUT_SYSTEM5, IS_END_OF_DAY5, SEQUENCE_NUM

请注意,openjpa在每列后面都加了“5”。不知道这是从哪里来的。生成的FOO_文件的DDL为:

org.apache.openjpa.lib.jdbc.ReportingSQLException: Column not found: VERSION5 in statement [INSERT INTO FOO_FILE (file_id, VERSION5, DATETIME05, FILE_NAME5, INPUT_SYSTEM5, IS_END_OF_DAY5, SEQUENCE_NUMBER5, TOTAL_AMOUNT5, TOTAL_COUNT5, MY_FILE_ID5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] {INSERT INTO FOO_FILE (file_id, VERSION5, DATETIME05, FILE_NAME5, INPUT_SYSTEM5, IS_END_OF_DAY5, SEQUENCE_NUMBER5, TOTAL_AMOUNT5, TOTAL_COUNT5, MY_FILE_ID5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)} [code=-28, state=S0022]
为了再次检查我的逻辑是否错误,我用超类方法(使用匈牙利符号)替换了correctName()

这也失败了


是否有人成功扩展PersistenceMappingDefaults以更改列/表名?在这方面,与Hibernate相比,openjpa似乎太复杂了。

它在当前版本的openjpa中工作。请参阅。

我已经测试了上面的代码,它适用于OpenJPA2.2.0

已成功将大小写字段名称映射到数据库中的下划线

So字段
私有字符串税率指db列
税率
,无需用
@列(名称='TAX\u RATE')注释

请记住,persistence.xml需要在
中定义这样的属性:


如果OpenJPA团队能够将此作为一个选项,比如RemoveAnnotation,那将是非常棒的

org.apache.openjpa.lib.jdbc.ReportingSQLException: Column not found: VERSION5 in statement [INSERT INTO FOO_FILE (file_id, VERSION5, DATETIME05, FILE_NAME5, INPUT_SYSTEM5, IS_END_OF_DAY5, SEQUENCE_NUMBER5, TOTAL_AMOUNT5, TOTAL_COUNT5, MY_FILE_ID5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] {INSERT INTO FOO_FILE (file_id, VERSION5, DATETIME05, FILE_NAME5, INPUT_SYSTEM5, IS_END_OF_DAY5, SEQUENCE_NUMBER5, TOTAL_AMOUNT5, TOTAL_COUNT5, MY_FILE_ID5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)} [code=-28, state=S0022]
CREATE TABLE FOO_FILE (file_id BIGINT NOT NULL, VERSION INTEGER, DATETIME0 TIME, FILE_NAME VARCHAR(100), INPUT_SYSTEM VARCHAR(3), IS_END_OF_DAY BIT, SEQUENCE_NUMBER BIGINT, TOTAL_AMOUNT NUMERIC, TOTAL_COUNT INTEGER, MY_FILE_ID VARCHAR(255), PRIMARY KEY (file_id))
protected void correctName(Table table, Column col) {
    String name = col.getName();
    name = removeHungarianNotation(name);
    col.setName(dict.getValidColumnName(name, table));
}
    <properties>
        <property name="openjpa.jdbc.MappingDefaults"
            value="com.myproject.ImprovedMappingDefaults"/>
    </properties>