-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
HHH-14276 test case for strange AnnotationException: MapsId in IdClas…
…s context
- Loading branch information
1 parent
aa0c9d1
commit 44ca255
Showing
5 changed files
with
313 additions
and
0 deletions.
There are no files selected for viewing
53 changes: 53 additions & 0 deletions
53
...rc/test/java/org/hibernate/test/mapping/hhh14276/NestedIdClassDerivedIdentifiersTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package org.hibernate.test.mapping.hhh14276; | ||
|
||
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA; | ||
|
||
import java.util.Map; | ||
|
||
import org.hibernate.cfg.AvailableSettings; | ||
import org.hibernate.hql.spi.id.inline.InlineIdsOrClauseBulkIdStrategy; | ||
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; | ||
import org.hibernate.test.mapping.hhh14276.entity.PlayerStat; | ||
import org.hibernate.test.mapping.hhh14276.entity.Score; | ||
import org.hibernate.testing.TestForIssue; | ||
import org.junit.Before; | ||
import org.junit.Test; | ||
|
||
/** | ||
* This template demonstrates how to develop a test case for Hibernate ORM, using the Java Persistence API. | ||
*/ | ||
@TestForIssue( jiraKey = "HHH-14276" ) | ||
public class NestedIdClassDerivedIdentifiersTest extends BaseEntityManagerFunctionalTestCase | ||
{ | ||
@Override | ||
protected Class<?>[] getAnnotatedClasses() | ||
{ | ||
return new Class<?>[] { PlayerStat.class, | ||
Score.class }; | ||
} | ||
|
||
@Override | ||
protected void addConfigOptions( Map options ) | ||
{ | ||
options.put( AvailableSettings.GLOBALLY_QUOTED_IDENTIFIERS, Boolean.TRUE ); | ||
options.put( AvailableSettings.HQL_BULK_ID_STRATEGY, InlineIdsOrClauseBulkIdStrategy.class.getName() ); | ||
} | ||
|
||
@Before | ||
public void setUp() | ||
{ | ||
doInJPA( this::entityManagerFactory, em -> | ||
{ | ||
// do nothing | ||
} ); | ||
} | ||
|
||
@Test | ||
public void testNestedIdClassDerivedIdentifiers() throws Exception | ||
{ | ||
doInJPA( this::entityManagerFactory, em -> | ||
{ | ||
// do nothing | ||
}); | ||
} | ||
} |
89 changes: 89 additions & 0 deletions
89
hibernate-core/src/test/java/org/hibernate/test/mapping/hhh14276/entity/PlayerStat.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package org.hibernate.test.mapping.hhh14276.entity; | ||
|
||
import java.io.Serializable; | ||
|
||
import javax.persistence.Basic; | ||
import javax.persistence.Column; | ||
import javax.persistence.Entity; | ||
import javax.persistence.FetchType; | ||
import javax.persistence.Id; | ||
import javax.persistence.IdClass; | ||
import javax.persistence.JoinColumn; | ||
import javax.persistence.ManyToOne; | ||
import javax.persistence.Table; | ||
|
||
@Entity | ||
@Table(name = "\"PlayerStats\"") | ||
@IdClass(PlayerStatId.class) | ||
public class PlayerStat implements Serializable | ||
{ | ||
private static final long serialVersionUID = 1L; | ||
|
||
@Id | ||
@Column(name = "player_id") | ||
private Integer playerId; | ||
|
||
@Basic(optional = false) | ||
@Column(name = "jersey_nbr") | ||
private Integer jerseyNbr; | ||
|
||
@Id | ||
@ManyToOne(optional = false, fetch = FetchType.EAGER) | ||
@JoinColumn(name = "game_id", referencedColumnName = "game_id") | ||
@JoinColumn(name = "is_home", referencedColumnName = "is_home") | ||
private Score score; | ||
|
||
public PlayerStat() | ||
{ | ||
} | ||
|
||
public Integer getGameId() | ||
{ | ||
return score.getGameId(); | ||
} | ||
|
||
public void setGameId(Integer gameId) | ||
{ | ||
score.setGameId(gameId); | ||
} | ||
|
||
public Boolean getHome() | ||
{ | ||
return score.getHome(); | ||
} | ||
|
||
public void setHome(Boolean home) | ||
{ | ||
score.setHome(home); | ||
} | ||
|
||
public Integer getPlayerId() | ||
{ | ||
return playerId; | ||
} | ||
|
||
public void setPlayerId(Integer playerId) | ||
{ | ||
this.playerId = playerId; | ||
} | ||
|
||
public Integer getJerseyNbr() | ||
{ | ||
return jerseyNbr; | ||
} | ||
|
||
public void setJerseyNbr(Integer jerseyNbr) | ||
{ | ||
this.jerseyNbr = jerseyNbr; | ||
} | ||
|
||
public Score getScore() | ||
{ | ||
return score; | ||
} | ||
|
||
public void setScore(Score score) | ||
{ | ||
this.score = score; | ||
} | ||
} |
57 changes: 57 additions & 0 deletions
57
hibernate-core/src/test/java/org/hibernate/test/mapping/hhh14276/entity/PlayerStatId.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package org.hibernate.test.mapping.hhh14276.entity; | ||
|
||
import java.io.Serializable; | ||
|
||
public class PlayerStatId implements Serializable | ||
{ | ||
private static final long serialVersionUID = 1L; | ||
|
||
private Integer playerId; | ||
|
||
// nested composite PK @IdClass: named like relationship in entity class | ||
private ScoreId score; | ||
|
||
public PlayerStatId() | ||
{ | ||
} | ||
|
||
public Integer getGameId() | ||
{ | ||
return score.getGameId(); | ||
} | ||
|
||
public void setGameId(Integer gameId) | ||
{ | ||
score.setGameId(gameId); | ||
} | ||
|
||
public Boolean getHome() | ||
{ | ||
return score.getHome(); | ||
} | ||
|
||
public void setHome(Boolean home) | ||
{ | ||
score.setHome(home); | ||
} | ||
|
||
public Integer getPlayerId() | ||
{ | ||
return playerId; | ||
} | ||
|
||
public void setPlayerId(Integer playerId) | ||
{ | ||
this.playerId = playerId; | ||
} | ||
|
||
public ScoreId getScoreId() | ||
{ | ||
return score; | ||
} | ||
|
||
public void setScoreId(ScoreId scoreId) | ||
{ | ||
this.score = scoreId; | ||
} | ||
} |
78 changes: 78 additions & 0 deletions
78
hibernate-core/src/test/java/org/hibernate/test/mapping/hhh14276/entity/Score.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package org.hibernate.test.mapping.hhh14276.entity; | ||
|
||
import java.io.Serializable; | ||
|
||
import javax.persistence.Basic; | ||
import javax.persistence.Column; | ||
import javax.persistence.Entity; | ||
import javax.persistence.Id; | ||
import javax.persistence.IdClass; | ||
import javax.persistence.Table; | ||
|
||
@Entity | ||
@Table(name = "\"Scores\"") | ||
@IdClass(ScoreId.class) | ||
public class Score implements Serializable | ||
{ | ||
private static final long serialVersionUID = 1L; | ||
|
||
@Id | ||
@Column(name = "game_id") | ||
private Integer gameId; | ||
|
||
@Id | ||
@Column(name = "is_home") | ||
private Boolean home; | ||
|
||
@Basic(optional = false) | ||
@Column(name = "roster_id") | ||
private Integer rosterId; | ||
|
||
@Basic | ||
@Column(name = "final_score") | ||
private Integer finalScore; | ||
|
||
public Score() | ||
{ | ||
} | ||
|
||
public Integer getGameId() | ||
{ | ||
return gameId; | ||
} | ||
|
||
public void setGameId(Integer gameId) | ||
{ | ||
this.gameId = gameId; | ||
} | ||
|
||
public Boolean getHome() | ||
{ | ||
return home; | ||
} | ||
|
||
public void setHome(Boolean home) | ||
{ | ||
this.home = home; | ||
} | ||
|
||
public Integer getRosterId() | ||
{ | ||
return rosterId; | ||
} | ||
|
||
public void setRosterId(Integer rosterId) | ||
{ | ||
this.rosterId = rosterId; | ||
} | ||
|
||
public Integer getFinalScore() | ||
{ | ||
return finalScore; | ||
} | ||
|
||
public void setFinalScore(Integer finalScore) | ||
{ | ||
this.finalScore = finalScore; | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
hibernate-core/src/test/java/org/hibernate/test/mapping/hhh14276/entity/ScoreId.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package org.hibernate.test.mapping.hhh14276.entity; | ||
|
||
import java.io.Serializable; | ||
|
||
public class ScoreId implements Serializable | ||
{ | ||
private static final long serialVersionUID = 1L; | ||
|
||
private Integer gameId; | ||
|
||
private Boolean home; | ||
|
||
public ScoreId() | ||
{ | ||
} | ||
|
||
public Integer getGameId() | ||
{ | ||
return gameId; | ||
} | ||
|
||
public void setGameId(Integer gameId) | ||
{ | ||
this.gameId = gameId; | ||
} | ||
|
||
public Boolean getHome() | ||
{ | ||
return home; | ||
} | ||
|
||
public void setHome(Boolean home) | ||
{ | ||
this.home = home; | ||
} | ||
} |