Skip to content

Commit 0126999

Browse files
marko-bekhtayrodiere
authored andcommitted
HHH-19630 Adjust how Hibernate Processor determines the entity type
1 parent 8e64575 commit 0126999

File tree

4 files changed

+30
-16
lines changed

4 files changed

+30
-16
lines changed

tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/constraint/DataTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ void test() {
1919
System.out.println( getMetaModelSourceAsString( MyEntity.class ) );
2020
System.out.println( getMetaModelSourceAsString( MyConstrainedRepository.class ) );
2121
assertMetamodelClassGeneratedFor( MyEntity.class );
22-
// assertMetamodelClassGeneratedFor( MyConstrainedRepository.class );
22+
assertMetamodelClassGeneratedFor( MyConstrainedRepository.class );
2323
}
2424
}

tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/constraint/MyConstrainedRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77
import jakarta.data.repository.CrudRepository;
88
import jakarta.data.repository.Find;
99
import jakarta.data.repository.Repository;
10+
import jakarta.validation.Valid;
1011
import jakarta.validation.constraints.NotNull;
1112
import jakarta.validation.constraints.Size;
1213

1314
@Repository
1415
public interface MyConstrainedRepository extends CrudRepository<MyEntity, Long> {
1516

17+
@Valid
18+
@NotNull
1619
@Find
1720
MyEntity findByName(@NotNull @Size(min = 5) String name);
1821
}

tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/constraint/MyEntity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.hibernate.processor.test.data.constraint;
66

7+
import jakarta.persistence.Column;
78
import jakarta.persistence.Entity;
89
import jakarta.persistence.Id;
910

@@ -12,5 +13,6 @@ public class MyEntity {
1213

1314
@Id
1415
private Long id;
16+
@Column(unique = true)
1517
private String name;
1618
}

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
import java.util.Set;
6363
import java.util.StringTokenizer;
6464
import java.util.regex.Pattern;
65-
import java.util.stream.Collectors;
6665
import java.util.stream.Stream;
6766

6867
import jakarta.persistence.AccessType;
@@ -2065,7 +2064,7 @@ private void createCriteriaFinder(
20652064
new CriteriaFinderMethod(
20662065
this, method,
20672066
methodName,
2068-
returnType.toString(),
2067+
typeAsString( returnType, false ),
20692068
containerType,
20702069
paramNames,
20712070
paramTypes,
@@ -2378,7 +2377,7 @@ && matchesNaturalKey( entity, fieldTypes ) ) {
23782377
new CriteriaFinderMethod(
23792378
this, method,
23802379
methodName,
2381-
returnType.toString(),
2380+
typeAsString( returnType, false ),
23822381
containerType,
23832382
paramNames,
23842383
paramTypes,
@@ -2482,7 +2481,7 @@ private void createSingleParameterFinder(
24822481
new CriteriaFinderMethod(
24832482
this, method,
24842483
methodName,
2485-
returnType.toString(),
2484+
typeAsString( returnType, false ),
24862485
containerType,
24872486
paramNames,
24882487
paramTypes,
@@ -3426,25 +3425,35 @@ private List<String> parameterTypes(ExecutableElement method) {
34263425
* Workaround for a bug in Java 20/21. Should not be necessary!
34273426
*/
34283427
private String typeAsString(TypeMirror type) {
3429-
String result;
3428+
return typeAsString( type, true );
3429+
}
3430+
3431+
private String typeAsString(TypeMirror type, boolean includeAnnotations) {
34303432
if ( type instanceof DeclaredType dt && dt.asElement() instanceof TypeElement te ) {
3433+
StringBuilder result = new StringBuilder();
3434+
if ( includeAnnotations ) {
3435+
for ( AnnotationMirror annotation : type.getAnnotationMirrors() ) {
3436+
result.append( annotation.toString() ).append( ' ' );
3437+
}
3438+
}
34313439
// get the "fqcn" without any type arguments
3432-
result = te.getQualifiedName().toString();
3440+
result.append( te.getQualifiedName().toString() );
34333441
// add the < ? ,? ....> as necessary:
34343442
if ( !dt.getTypeArguments().isEmpty() ) {
3435-
result += dt.getTypeArguments().stream()
3436-
.map( this::typeAsString )
3437-
.collect( Collectors.joining( ",", "<", ">" ) );
3443+
result.append( "<" );
3444+
int index = 0;
3445+
for ( ; index < dt.getTypeArguments().size() - 1; index++ ) {
3446+
result.append( typeAsString( dt.getTypeArguments().get( index ), true ) )
3447+
.append( ", " );
3448+
}
3449+
result.append( typeAsString( dt.getTypeArguments().get( index ), true ) );
3450+
result.append( ">" );
34383451
}
3452+
return result.toString();
34393453
}
34403454
else {
3441-
result = type.toString();
3455+
return type.toString();
34423456
}
3443-
3444-
for ( AnnotationMirror annotation : type.getAnnotationMirrors() ) {
3445-
result = annotation.toString() + ' ' + result;
3446-
}
3447-
return result;
34483457
}
34493458

34503459
private TypeMirror parameterType(VariableElement parameter) {

0 commit comments

Comments
 (0)