Anonymous
Класс org.hibernate.mapping.OneToMany не может быть приведен к классу org.hibernate.mapping.ToOne находится в безымянном
Сообщение
Anonymous » 05 дек 2024, 13:17
Пользователь.java
Код: Выделить всё
package com.cineclubs.app.models;
import jakarta.persistence.*;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
@Entity
@Table(name = "users")
public class User {
@Id
private String userId;
@Column(nullable = false)
private String email;
private String firstName;
private String lastName;
private String imageUrl;
@Column(nullable = false)
private String username;
@Column(name = "created_at")
private java.time.LocalDateTime createdAt = LocalDateTime.now();
@Column(name = "updated_at")
private java.time.LocalDateTime updatedAt = LocalDateTime.now();
@ManyToMany(fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
},
mappedBy = "members")
private Set joinedClubs = new HashSet();
@OneToMany(mappedBy = "author", cascade = { CascadeType.PERSIST, CascadeType.MERGE }, orphanRemoval = true)
private Set
posts = new HashSet();
@OneToMany(mappedBy = "author", cascade = { CascadeType.PERSIST, CascadeType.MERGE }, orphanRemoval = true)
private Set comments = new HashSet();
@ManyToMany(mappedBy = "likes", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private Set likedPosts = new HashSet();
@ManyToMany(mappedBy = "likes", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private Set likedComments = new HashSet();
public User() {
}
public User(String userId, String email, String firstName, String lastName, String imageUrl, String username,
LocalDateTime createdAt, LocalDateTime updatedAt, Set posts, Set comments,
Set likedPosts, Set likedComments) {
this.userId = userId;
this.email = email;
this.firstName = firstName;
this.lastName = lastName;
this.imageUrl = imageUrl;
this.username = username;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
this.posts = posts;
this.comments = comments;
this.likedPosts = likedPosts;
this.likedComments = likedComments;
}
}
Club.java
Код: Выделить всё
@Entity
@Table(name = "clubs")
public class Club {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String description;
@Column(nullable = false)
private String imageUrl;
@Column(name = "is_public", nullable = false)
private boolean isPublic;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@ManyToOne
@JoinColumn(name = "category_id", nullable = false)
private Category category;
@OneToMany(mappedBy = "club", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private Set members = new HashSet();
@OneToMany(mappedBy = "club", cascade = CascadeType.ALL, orphanRemoval = true)
private Set
posts;
@Column(nullable = false, unique = true)
private String slug;
@Column(name = "created_at")
private java.time.LocalDateTime createdAt = LocalDateTime.now();
@Column(name = "updated_at")
private LocalDateTime updatedAt = LocalDateTime.now();
public Club() {
}
public Club(Long id, String name, String description, String imageUrl, User user,
Set members, Set posts) {
this.id = id;
this.name = name;
this.description = description;
this.imageUrl = imageUrl;
this.user = user;
this.members = members;
this.posts = posts;
}
}
ClubMember.java
Код: Выделить всё
@Entity
@Table(name = "club_members")
public class ClubMember {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private User user;
@ManyToOne
@JoinColumn(name = "club_id", nullable = false)
private Club club;
private MemberStatus status = MemberStatus.PENDING;
@Enumerated(EnumType.STRING)
private ClubRole role = ClubRole.MEMBER;
@Column(name = "joined_at")
private java.time.LocalDateTime joinedAt;
@Column(name = "created_at")
private java.time.LocalDateTime createdAt = LocalDateTime.now();
@Column(name = "updated_at")
private java.time.LocalDateTime updatedAt = LocalDateTime.now();
public ClubMember() {
}
public ClubMember(Long id, User user, Club club, MemberStatus status, ClubRole role) {
this.id = id;
this.user = user;
this.club = club;
this.status = status;
this.role = role;
}
}
Я пытался создать таблицу объединения между клубом и пользователем, я создал таблицу ClubMember. миграции прошли успешно, я получил таблицы, созданные в базе данных, но когда я запускаю проект Spring, я получил ошибку
class org.hibernate.mapping.OneToMany не может быть преобразованы в класс org.hibernate.mapping.ToOne находятся в безымянном модуле загрузчика 'app'
Подробнее здесь:
https://stackoverflow.com/questions/792 ... rnate-mapp
1733393878
Anonymous
Пользователь.java [code]package com.cineclubs.app.models; import jakarta.persistence.*; import java.time.LocalDateTime; import java.util.HashSet; import java.util.Objects; import java.util.Set; @Entity @Table(name = "users") public class User { @Id private String userId; @Column(nullable = false) private String email; private String firstName; private String lastName; private String imageUrl; @Column(nullable = false) private String username; @Column(name = "created_at") private java.time.LocalDateTime createdAt = LocalDateTime.now(); @Column(name = "updated_at") private java.time.LocalDateTime updatedAt = LocalDateTime.now(); @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "members") private Set joinedClubs = new HashSet(); @OneToMany(mappedBy = "author", cascade = { CascadeType.PERSIST, CascadeType.MERGE }, orphanRemoval = true) private Set posts = new HashSet(); @OneToMany(mappedBy = "author", cascade = { CascadeType.PERSIST, CascadeType.MERGE }, orphanRemoval = true) private Set comments = new HashSet(); @ManyToMany(mappedBy = "likes", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) private Set likedPosts = new HashSet(); @ManyToMany(mappedBy = "likes", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) private Set likedComments = new HashSet(); public User() { } public User(String userId, String email, String firstName, String lastName, String imageUrl, String username, LocalDateTime createdAt, LocalDateTime updatedAt, Set posts, Set comments, Set likedPosts, Set likedComments) { this.userId = userId; this.email = email; this.firstName = firstName; this.lastName = lastName; this.imageUrl = imageUrl; this.username = username; this.createdAt = createdAt; this.updatedAt = updatedAt; this.posts = posts; this.comments = comments; this.likedPosts = likedPosts; this.likedComments = likedComments; } } [/code] Club.java [code]@Entity @Table(name = "clubs") public class Club { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private String description; @Column(nullable = false) private String imageUrl; @Column(name = "is_public", nullable = false) private boolean isPublic; @ManyToOne @JoinColumn(name = "user_id") private User user; @ManyToOne @JoinColumn(name = "category_id", nullable = false) private Category category; @OneToMany(mappedBy = "club", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private Set members = new HashSet(); @OneToMany(mappedBy = "club", cascade = CascadeType.ALL, orphanRemoval = true) private Set posts; @Column(nullable = false, unique = true) private String slug; @Column(name = "created_at") private java.time.LocalDateTime createdAt = LocalDateTime.now(); @Column(name = "updated_at") private LocalDateTime updatedAt = LocalDateTime.now(); public Club() { } public Club(Long id, String name, String description, String imageUrl, User user, Set members, Set posts) { this.id = id; this.name = name; this.description = description; this.imageUrl = imageUrl; this.user = user; this.members = members; this.posts = posts; } } [/code] ClubMember.java [code]@Entity @Table(name = "club_members") public class ClubMember { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "user_id", nullable = false) private User user; @ManyToOne @JoinColumn(name = "club_id", nullable = false) private Club club; private MemberStatus status = MemberStatus.PENDING; @Enumerated(EnumType.STRING) private ClubRole role = ClubRole.MEMBER; @Column(name = "joined_at") private java.time.LocalDateTime joinedAt; @Column(name = "created_at") private java.time.LocalDateTime createdAt = LocalDateTime.now(); @Column(name = "updated_at") private java.time.LocalDateTime updatedAt = LocalDateTime.now(); public ClubMember() { } public ClubMember(Long id, User user, Club club, MemberStatus status, ClubRole role) { this.id = id; this.user = user; this.club = club; this.status = status; this.role = role; } } [/code] Я пытался создать таблицу объединения между клубом и пользователем, я создал таблицу ClubMember. миграции прошли успешно, я получил таблицы, созданные в базе данных, но когда я запускаю проект Spring, я получил ошибку class org.hibernate.mapping.OneToMany не может быть преобразованы в класс org.hibernate.mapping.ToOne находятся в безымянном модуле загрузчика 'app' Подробнее здесь: [url]https://stackoverflow.com/questions/79254219/class-org-hibernate-mapping-onetomany-cannot-be-cast-to-class-org-hibernate-mapp[/url]