HHH-17755 add test for issue
This commit is contained in:
parent
5a134f0f38
commit
731b3bd7e4
|
@ -0,0 +1,104 @@
|
|||
package org.hibernate.orm.test.annotations.mapsid;
|
||||
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.IdClass;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.MapsId;
|
||||
import jakarta.persistence.OneToMany;
|
||||
import jakarta.persistence.PrimaryKeyJoinColumn;
|
||||
import jakarta.persistence.Table;
|
||||
import org.hibernate.testing.orm.junit.DomainModel;
|
||||
import org.hibernate.testing.orm.junit.SessionFactory;
|
||||
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static jakarta.persistence.CascadeType.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@SessionFactory
|
||||
@DomainModel(annotatedClasses ={MapsIdClassTest.User.class, MapsIdClassTest.UserAuthority.class})
|
||||
public class MapsIdClassTest {
|
||||
|
||||
@Test
|
||||
void test(SessionFactoryScope scope) {
|
||||
scope.inTransaction( s-> {
|
||||
User ue = new User();
|
||||
ue.setName("Gavin");
|
||||
UserAuthority uae = new UserAuthority();
|
||||
ue.addUserAuthority(uae);
|
||||
uae.setUser(ue);
|
||||
uae.setAuthority("God");
|
||||
s.persist(ue);
|
||||
s.flush();
|
||||
assertEquals( ue.id, uae.userId );
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
static class UserAuthorityId {
|
||||
private Long userId;
|
||||
private String authority;
|
||||
}
|
||||
|
||||
@Entity
|
||||
@Table(name = "users")
|
||||
static class User {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
Long id;
|
||||
|
||||
String name;
|
||||
|
||||
String password;
|
||||
|
||||
@Column(name = "is_enabled")
|
||||
boolean enabled;
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@OneToMany(
|
||||
cascade = {PERSIST, MERGE, REMOVE},
|
||||
mappedBy = "user",
|
||||
orphanRemoval = true)
|
||||
private Set<UserAuthority> userAuthorities = new HashSet<>();
|
||||
|
||||
public void addUserAuthority(UserAuthority userAuthority) {
|
||||
this.userAuthorities.add(userAuthority);
|
||||
}
|
||||
}
|
||||
|
||||
@Entity
|
||||
@IdClass(UserAuthorityId.class)
|
||||
@Table(name = "user_authorities")
|
||||
static class UserAuthority {
|
||||
|
||||
@Id
|
||||
private Long userId;
|
||||
|
||||
@Id
|
||||
private String authority;
|
||||
|
||||
@ManyToOne
|
||||
@MapsId("userId")
|
||||
@PrimaryKeyJoinColumn(name = "user_id")
|
||||
private User user;
|
||||
|
||||
public void setUser(User user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public void setAuthority(String authority) {
|
||||
this.authority = authority;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue