Skip to content

Commit

Permalink
HHH-14276 test case for strange AnnotationException: MapsId in IdClas…
Browse files Browse the repository at this point in the history
…s context
  • Loading branch information
[email protected] authored and Sanne committed Nov 16, 2020
1 parent aa0c9d1 commit 44ca255
Show file tree
Hide file tree
Showing 5 changed files with 313 additions and 0 deletions.
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
});
}
}
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;
}
}
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;
}
}
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;
}
}
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;
}
}

0 comments on commit 44ca255

Please sign in to comment.