zheng hank (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=5a38e9c...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiNWY4MjM1YjM5...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-14059?atlOrigin=eyJpIjoiNWY4Mj...
) HHH-14059 (
https://hibernate.atlassian.net/browse/HHH-14059?atlOrigin=eyJpIjoiNWY4Mj...
) Cannot use full qualified enum name which has two uppercase alphabet prefix (
https://hibernate.atlassian.net/browse/HHH-14059?atlOrigin=eyJpIjoiNWY4Mj...
)
Issue Type: Bug Affects Versions: 5.4.17 Assignee: Unassigned Components: hibernate-core
Created: 03/Jun/2020 23:06 PM Labels: core hibernate Priority: Major Reporter: zheng hank
(
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=5a38e9c...
)
Hi,
I found that this sql will throw error: Invalid path:
'io.github.zhengyhn.practice.hibernate.ABStatus.A'.
select s from Sample s where s.upperStatus =
io.github.zhengyhn.practice.hibernate.ABStatus.A
But the below sql works.
select s from Sample s where s.lowerStatus =
io.github.zhengyhn.practice.hibernate.BaStatus.A
I read the code and found this is because of these lines of code in
org.hibernate.internal.util.ReflectHelper.
if ( conventionalJavaConstants &&
!JAVA_CONSTANT_PATTERN.matcher( name ).find() ) {
return null ;
}
And the JAVA_CONSTANT_PATTERN is as below.
private static final Pattern JAVA_CONSTANT_PATTERN = Pattern.compile(
"[a-z\\d]+\\.([A-Z]{1}[a-z\\d]+)+\\$?([A-Z]{1}[a-z\\d]+)*\\.[A-Z_\\$]+" ,
Pattern.UNICODE_CHARACTER_CLASS);
This pattern indicate that the constant name must begin with an upper case alphabet. So
"ABStatus" cannot be recognized as valid constant name.
However, in my real-world project, we use GSStatus as the enum class name. I have to
change it to GsStatus currently.
I suggest changing this pattern to " [a-z\\d] \\.( [A-Z] [a-z\\d] )
$?( [A-Z]
{1}
[a-z\\d] )*
. [A-Z_\\$] ".
I have written a simple project for finding this issue. You can refer it as reference.
https://github.com/zhengyhn/java-practice/tree/master/hibernate-enum
(
https://hibernate.atlassian.net/browse/HHH-14059#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-14059#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100128- sha1:e736ab1 )