Skip to content

Commit

Permalink
HHH-18626 fix error for @id annotation in @embeddable class
Browse files Browse the repository at this point in the history
  • Loading branch information
gavinking committed Sep 17, 2024
1 parent e9bf523 commit fc2b1b9
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -781,6 +781,12 @@ private static void buildProperty(
propertyBinder.setInheritanceStatePerClass( inheritanceStatePerClass );
propertyBinder.setId( !entityBinder.isIgnoreIdAnnotations() && hasIdAnnotation( property ) );

if ( isPropertyOfRegularEmbeddable( propertyHolder, isComponentEmbedded )
&& property.hasDirectAnnotationUsage(Id.class)) {
throw new AnnotationException("Member '" + property.getName()
+ "' of embeddable class " + propertyHolder.getClassName() + " is annotated '@Id'");
}

final LazyGroup lazyGroupAnnotation = property.getDirectAnnotationUsage( LazyGroup.class );
if ( lazyGroupAnnotation != null ) {
propertyBinder.setLazyGroup( lazyGroupAnnotation.value() );
Expand All @@ -805,6 +811,12 @@ private static void buildProperty(
addNaturalIds( inSecondPass, property, columns, joinColumns, context );
}

private static boolean isPropertyOfRegularEmbeddable(PropertyHolder propertyHolder, boolean isComponentEmbedded) {
return propertyHolder.isComponent() // it's a field of some sort of composite value
&& !propertyHolder.isInIdClass() // it's not a field of an id class
&& !isComponentEmbedded; // it's not an entity field matching a field of the id class
}

private static AnnotatedColumns bindProperty(
PropertyHolder propertyHolder,
Nullability nullability,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
/**
* @author Emmanuel Bernard
*/
@SuppressWarnings("serial")
public class Location implements Serializable {
public double longitude;
public double latitude;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public void setCar(Car car) {
@Embeddable
public static class Car {

@Id
@Column(insertable = false, updatable = false)
private Integer id;

// represents a unidirectional one-to-one
Expand Down

0 comments on commit fc2b1b9

Please sign in to comment.