[hibernate-dev] [hibernate/hibernate-orm] HHH-10956 test cases and fix (#3368)

Jason Pyeron jpyeron at pdinc.us
Thu Apr 23 09:30:40 EDT 2020


Github has been down for a while, so moving to mailing list.

> Hi @pdinc-oss ,
> 
> the issue it is how you define the `IdClass`
> 
> for such a case
> 
> ```
> @Entity
> @IdClass(PK.class)
> public static class NodeS {
> 
> 	@Id
> 	@GeneratedValue(strategy = GenerationType.SEQUENCE)
> 	private Long nid;
> 
> 	@Id
> 	@ManyToOne
> 	private HeadS hid;
>         ...
> }
> ```
> 
> the class has to be
> 
> ```
> class PK implements Serializable {
> 
> 	private Long nid;
> 
> 	private HeadS hid;
> 
> 	public PK(Long nid, HeadS hid) {
> 		this.nid = nid;
> 		this.hid = hid;
> 	}
>         ...
> }
> ```

JPA 2 spec 2.4.1.3 Examples of Derived Identities, 

Case (a): The dependent entity uses IdClass to represent a composite key:

```
public class DependentId {
 String name; // matches name of @Id attribute
 long emp; // matches name of @Id attribute and type of Employee PK
}
@Entity
@IdClass(DependentId.class)
public class Dependent {
 @Id String name;
// id attribute mapped by join column default
 @Id @ManyToOne Employee emp;
...
}
```

HeadS is the Entity type and its Id type is Long.

I backed out the changes to SimpleValue.java/AbstractEntityTuplizer.java and changed the IdClasses to match and it does pass the tests in Hibernate.

But when testing 2.4.1.3, case a without the patch the following tests fails:

- testCompositePkWithIdentityAndFKByAuto: No part of a composite identifier may be null
- testCompositePkWithIdentityAndFKByAuto2: No part of a composite identifier may be null
- testCompositePkWithIdentityAndFKBySequence: No part of a composite identifier may be null
- testCompositePkWithIdentityAndFKBySequence2: No part of a composite identifier may be null
- testCompositePkWithIdentityAndFKByTable: No part of a composite identifier may be null
- testCompositePkWithIdentityAndFKByTable2: No part of a composite identifier may be null

These tests are expected to fail / ignored:
- testCompositePkWithIdentityAndFKByIdentity: No part of a composite identifier may be null
- testCompositePkWithIdentityAndFKByIdentity2: skipped


-Jason


—
You are receiving this because you were mentioned.
Reply to this email directly, https://github.com/hibernate/hibernate-orm/pull/3368#issuecomment-618352419, or https://github.com/notifications/unsubscribe-auth/AAQUDIQWBZ5E4INWC5ELIZ3ROASJXANCNFSM4MOS2VNA.




More information about the hibernate-dev mailing list