org.hibernate.MappingException:未知实体 - Hibernate、SpringBoot、DTO 模式

org.hibernate.MappingException: Unknown entity - Hibernate, SpringBoot, DTO pattern

我正在尝试使用 DAODTO 模式构建一个简单的 SpringBootHibernate 应用程序。

我正在尝试将用户列表保存到数据库中。

当我使用 User class 时它工作正常,但是当我尝试使用 DTO CreateUserDto class 时我收到以下错误:

"Unknown entity: com.app.sportapp.dto.CreateUserDto; nested exception is org.hibernate.MappingException: Unknown entity: com.app.sportapp.dto.CreateUserDto"

存在 SingleTable 继承,其中 Player classCoach class 继承 User class

User.java

@NoArgsConstructor
@AllArgsConstructor
@ToString
@Getter
@Setter
@Entity(name = "Users")
@ApiModel(description = "All details about user")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "User_Type", discriminatorType= DiscriminatorType.STRING)
public class User implements Seriaalizable{

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String firstName;   
    private String lastName;    
    private String username;    
    private String email;    
    private String password;   
    private String contactNumber;
}

Player.java

@NoArgsConstructor
@AllArgsConstructor
@ToString
@Getter
@Setter
@Entity(name = "Players")
@DiscriminatorValue(value = "player")
@DiscriminatorOptions(force=true)
public class Player extends User {...}

Coach.java

@Entity(name = "Coaches")
@DiscriminatorValue(value = "coach")
@DiscriminatorOptions(force=true)
public class Coach extends User{

}

这里是 DTO:

CreateUserDto.java

public class CreateUserDto {...}

PlayerDto.java

public class PlayerDto extends CreateUserDto{...}

CoachDto.java

public class CoachDto extends CreateUserDto{


}

因为我对 DAODTO 模式非常陌生,所以我假设它应该有一个名为 @Entity 的模型 CreateUser与 DTO CreateUserDto 同名?或者我可以举个例子,我做了一个 User 模型并创建一个新的 CreateUserDto 吗?

谢谢!

错误发生是因为您将 DTO 视为一个实体。 从 DTOs 中删除 JPA 注释并且不要使用那些 类 连接到数据库。

您会将查询结果从实体转换为 DTO,反之亦然。

我还建议查看 Mapstruct 以了解 DTO 的创建。这可能会更容易将实体与 DTO 分开。