@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "users")
@ToString
@Table(name = "users")
@Embeddable
public class User implements UserDetails{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id",unique=true)
private Long id;
@OneToMany
@Cascade({CascadeType.ALL })
@JoinTable(name = "users_authorities")
private Set<SimpleGrantedAuthority> authorities;
}
这是我的User.java
,有一个private Set<SimpleGrantedAuthority> authorities
。我想使用 jpa/hibernate 映射到另一个实体SimpleGrantedAuthority
。
@Data
@Entity(name = "authorities")
@Embeddable
@Table(name = "authorities", uniqueConstraints={@UniqueConstraint(columnNames={"authority","username"})})
class SimpleGrantedAuthority implements GrantedAuthority {
private Long id;
@Column(name = "authority")
private String authority;
@Column(name = "username")
private String username;
}
这SimpleGrantedAuthority .java
,如何编写正确的注解来映射Set<SimpleGrantedAuthority> authorities;
SimpleGrantedAuthority.java
上面的private Set<SimpleGrantedAuthority> authorities;
Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.as.backend.antscience.entity.SimpleGrantedAuthority
如果你在 JPA 中需要一个快速组合键,你必须写如下。首先,将组合键定义为类并放置一个@Embeddable注释。并将该 Id 类定义为 entitiy 类的成员并放入@EmbeddedId
@Data
@Entity(name = "authorities")
@Embeddable
@Table(name = "authorities", uniqueConstraints={@UniqueConstraint(columnNames={"authority","username"})})
class SimpleGrantedAuthority implements GrantedAuthority {
@EmbeddedId
private Id id;
@Embeddable
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
@Data
public static class Id implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "authority")
private String authority;
@Column(name = "username")
private String username;
}
}
@JoinColumns
注释可能是您要查找的。
https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/JoinColumns.html