[
https://issues.apache.org/jira/browse/OPENJPA-2651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15421406#comment-15421406
]
Heath Thomann commented on OPENJPA-2651:
----------------------------------------
Hi Francesco! Let me answer your questions:
Q1) Are you also going to provide patches for 2.3.x and trunk as well?
A1) I applied to 2.2.x and trunk. I don't use 2.3.x and was thinking others
did so I let the interested parties put stuff into 2.3.x as they see fit. I
don't know, maybe no one is using 2.3.x these days??
Q2) Finally, why is not the "affected versions" above set to 2.2.2, 2.3.0 and
2.4.1? I would also set "fix for versions" to 2.2.3, 2.3.1 and 2.4.2.
A2) Your question is an interesting one......one could spend all day updating
"affected versions". Personally, I use the versions I test on, which is always
the latest version of a particular branch. For example, the testing I was
doing was on 2.2.x, and therefore I was using the latest code, which is 2.2.3.
If I was on 1.2.x I'd be using 1.2.4, and as such list it. Continuing with
1.2.4, I'd take the testing and fix forward to 2.0.x, 2.1.x, 2.2.x, and trunk;
where applicable. As such, I'd list those as the affected versions.
Q3) Shall we resolve this issue, then?
A3) Yes, was getting around to it.
I hope this helps.
Thanks,
Heath
> IDs of entities are incorrectly assigned when @SqlResultSetMapping is used
> with inheritance and a ManyToOne relationship.
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-2651
> URL: https://issues.apache.org/jira/browse/OPENJPA-2651
> Project: OpenJPA
> Issue Type: Bug
> Components: sql
> Affects Versions: 2.2.2, 2.3.0, 2.4.1
> Reporter: Heath Thomann
> Assignee: Heath Thomann
> Priority: Critical
> Fix For: 2.2.3, 2.3.1, 2.4.2
>
> Attachments: OPENJPA-2651-2.2.x.patch, SqlResultSetMappingIssue.zip
>
>
> I have discovered an issue with using @SqlResultSetMapping when inheritance
> and ManyToOne relationships are used. To explain the issue, take this entity
> and @SqlResultSetMapping:
> @Entity
> @SqlResultSetMapping(name = "MyResMap", entities = {
> @EntityResult(entityClass = CrtRequisicaoChequePersEntity.class, fields = {
> @FieldResult(name = "crtOperacaoByOperacaoRecepcaoServCent.id", column =
> "opRecepcaoServCentraisId"),
> @FieldResult(name = "crtOperacaoByOperacaoRecepcaoServCent.dataHora",
> column = "opRecepcaoServCentraisDataHora")
> })
> })
> public class CrtRequisicaoChequePersEntity extends CrtRequisicaoEntity {
> .......
> @ManyToOne
> @javax.persistence.JoinColumn(name = "OPERACAO_RECEPCAO_SERV_CENT",
> referencedColumnName = "ID")
> private CrtOperacaoEntity crtOperacaoByOperacaoRecepcaoServCent;
> As you can see, this entity extends 'CrtRequisicaoEntity' and has a ManyToOne
> relationship to 'CrtOperacaoEntity', with name
> 'crtOperacaoByOperacaoRecepcaoServCent'. As you can see, the @FieldResult in
> the @SqlResultSetMapping references the fields in 'CrtOperacaoEntity'.
> These two entities are defined as follows:
> @Entity
> @Inheritance(strategy = InheritanceType.JOINED)
> public class CrtRequisicaoEntity {
> .....
> @Id
> private long id;
> .....
> @Entity
> public class CrtOperacaoEntity implements Serializable {
> .....
> @Id
> private long id;
> @Basic
> private Timestamp dataHora;
> With these entities, take an SQL select which uses an AS (the entire SQL is
> to long to add here, see provided recreate/test attached):
> String sqlCust = "SELECT t0.ID" +
> .........
> ",t2.DATA_HORA as opRecepcaoServCentraisDataHora" +
> ",t2.ID as opRecepcaoServCentraisId" +
> ....
> "FROM CrtRequisicaoChequePersEntity t0"
> ....
> "INNER JOIN CrtOperacaoEntity t2"
> ....
> With this SQL, the two IDs will be populated with the ID from
> CrtRequisicaoChequePersEntity, rather than the ID corresponding to each
> entity.
> Thanks,
> Heath
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)