ентити наследуются от суперкласса. Исправил связи
parent
9eebb2bfff
commit
cd695b9cb4
|
@ -0,0 +1,33 @@
|
||||||
|
package ru.ldeloff.hedgehogcloud.entity;
|
||||||
|
|
||||||
|
import com.sun.istack.NotNull;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.springframework.data.domain.Persistable;
|
||||||
|
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.MappedSuperclass;
|
||||||
|
import javax.persistence.Transient;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Setter
|
||||||
|
@MappedSuperclass
|
||||||
|
@EqualsAndHashCode
|
||||||
|
public class BaseEntity implements Persistable<String> {
|
||||||
|
@Id
|
||||||
|
protected String id = UUID.randomUUID().toString();
|
||||||
|
@Transient
|
||||||
|
private Boolean justCreated = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getId() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isNew() {
|
||||||
|
return justCreated;
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,10 +6,7 @@ import lombok.Setter;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.*;
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@ -17,13 +14,15 @@ import java.util.Set;
|
||||||
@Setter
|
@Setter
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "roles")
|
@Table(name = "roles")
|
||||||
public class RoleEntity implements GrantedAuthority {
|
public class RoleEntity extends BaseEntity implements GrantedAuthority {
|
||||||
@Id
|
|
||||||
private String id;
|
|
||||||
private String name;
|
private String name;
|
||||||
@Transient
|
@Transient
|
||||||
|
@ManyToMany
|
||||||
private Set<UserEntity> users;
|
private Set<UserEntity> users;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public String getAuthority() {
|
public String getAuthority() {
|
||||||
return getName();
|
return getName();
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
package ru.ldeloff.hedgehogcloud.entity;
|
package ru.ldeloff.hedgehogcloud.entity;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.*;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@ -16,15 +14,17 @@ import java.util.Set;
|
||||||
@Setter
|
@Setter
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "users")
|
@Table(name = "users")
|
||||||
public class UserEntity implements UserDetails {
|
public class UserEntity extends BaseEntity implements UserDetails {
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
private String id;
|
|
||||||
private String username;
|
private String username;
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
@ManyToMany(fetch = FetchType.EAGER)
|
@ManyToMany(fetch = FetchType.EAGER)
|
||||||
private Set<RoleEntity> roles;
|
@JoinTable(
|
||||||
|
name = "users_roles",
|
||||||
|
joinColumns = { @JoinColumn(name = "user_id") },
|
||||||
|
inverseJoinColumns = { @JoinColumn(name = "role_id") }
|
||||||
|
)
|
||||||
|
private Set<RoleEntity> roles = new HashSet<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
|
|
||||||
<include file="scripts/01_create_table_users.sql" relativeToChangelogFile="true"/>
|
<include file="scripts/01_create_table_users.sql" relativeToChangelogFile="true"/>
|
||||||
<include file="scripts/02_create_table_roles.sql" relativeToChangelogFile="true"/>
|
<include file="scripts/02_create_table_roles.sql" relativeToChangelogFile="true"/>
|
||||||
|
<include file="scripts/03_create_table_users_roles.sql" relativeToChangelogFile="true"/>
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
|
@ -0,0 +1,19 @@
|
||||||
|
-- liquibase formatted sql
|
||||||
|
|
||||||
|
-- changeset L_DelOff:create_table_users_roles rollbackSplitStatements:true
|
||||||
|
-- comment: Создание сопоставляющей таблицы пользователь - роли
|
||||||
|
|
||||||
|
CREATE TABLE users_roles
|
||||||
|
(
|
||||||
|
`user_id` VARCHAR(36) NOT NULL,
|
||||||
|
`role_id` VARCHAR(36) NOT NULL,
|
||||||
|
PRIMARY KEY (`user_id`,`role_id`),
|
||||||
|
KEY `role_id` (`role_id`),
|
||||||
|
CONSTRAINT `users_roles_ibfk_1`
|
||||||
|
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
||||||
|
CONSTRAINT `users_roles_ibfk_2`
|
||||||
|
FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- rollback DROP TABLE users_roles;
|
Loading…
Reference in New Issue