[
https://issues.apache.org/jira/browse/OPENJPA-1979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13280090#comment-13280090
]
Francois commented on OPENJPA-1979:
-----------------------------------
Hi.
I checked out version 2.2.0 and found that this patch wasn't applied yet.
Based on Micael's question, I modified the method as follows and I can confirm
that it worked with constant values as numbers and text:
private Column newColumn(JoinColumn join) {
Column col = new Column();
if (!StringUtils.isEmpty(join.name()))
col.setIdentifier(DBIdentifier.newColumn(join.name(), delimit()));
if (!StringUtils.isEmpty(join.columnDefinition()))
col.setTypeIdentifier(DBIdentifier.newColumnDefinition(join.columnDefinition()));
// if (!StringUtils.isEmpty(join.referencedColumnName())) //f fix from
openjpa-1979
//
col.setTargetIdentifier(DBIdentifier.newColumn(join.referencedColumnName(),
delimit()));
String joinColumnName = join.referencedColumnName();
if (!StringUtils.isEmpty(joinColumnName)) {
boolean isConstant = joinColumnName.charAt(0) == '\'';
if(!isConstant){
if (joinColumnName.charAt(0) == '-'
|| joinColumnName.charAt(0) == '.'
|| Character.isDigit(joinColumnName.charAt(0))) {
isConstant = true;
try {
if (joinColumnName.indexOf('.') == -1){
new Integer(joinColumnName);
} else{
new Double(joinColumnName);
}
} catch (NumberFormatException nfe) {
throw new RuntimeException("Constant Join Column is not
a Valid Number: " + joinColumnName
+ ", Join: " + join);
}
} else if ("null".equalsIgnoreCase(joinColumnName)){
isConstant = true;
}
}
if (isConstant) {
col.setTargetIdentifier(DBIdentifier.newConstant(joinColumnName));
} else {
col.setTargetIdentifier(DBIdentifier.newColumn(joinColumnName,
delimit()));
}
}
col.setNotNull(!join.nullable());
col.setFlag(Column.FLAG_UNINSERTABLE, !join.insertable());
col.setFlag(Column.FLAG_UNUPDATABLE, !join.updatable());
return col;
}
> Regression for non-standard joins with constant column values
> --------------------------------------------------------------
>
> Key: OPENJPA-1979
> URL: https://issues.apache.org/jira/browse/OPENJPA-1979
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc, kernel
> Affects Versions: 2.0.0-M1, 2.0.0
> Reporter: Pinaki Poddar
> Attachments: OPENJPA-1979.patch.1.txt, Test-1979.zip
>
>
> The non-standard join can use constant column values by enclosing them in
> single-quote character. This behavior is regressed. The likely cause of this
> regression is new delimiting support for schema elements introduced in JPA
> 2.0. The constant column value used to be detected during schema definition
> based on the assumption of the name being enclosed in single-quote. Due to
> introduction of delimiting capability, the constant value is now enclosed in
> double-quote followed by a single-quote.
> The visible effect is failure to define schema for non-standard join with
> constant values.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira