java—如何创建到没有主键的sql表的Map?

rlcwz9us  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(317)

我有一个没有主键的表。它期待着一个 @ID 如果没有注解,将引发以下错误:

Caused by: org.hibernate.AnnotationException: No identifier specified for entity: 
overall.model.Overall
    at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:266) ~[hibernate-core-5.4.17.Final.jar:5.4.17.Final]
    at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:211) ~[hibernate-core-5.4.17.Final.jar:5.4.17.Final]
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) ~[hibernate-core-5.4.17.Final.jar:5.4.17.Final]

我尝试过在jdbc模板中实现这两种方法,也尝试过使用 JPA 但我无法创建任何实体 @ID 注解。
该表的所有字段都是string类型。你能给我一个关于如何配置一个没有主键的表的建议吗?
我用的是 spring-boot .

sqserrrh

sqserrrh1#

由于表根本没有主键,请使用此解决方法:创建一个由所有列组成的假复合主键。我希望他们不要太多。例如:

@Entity
@IdClass(UserNRole.InnerIdClass.class)
@Table(name = "users_n_roles")
public class UserNRole {
    @Id
    @Column(name = "user_id")
    private Integer userId;

    @Id
    @Column(name = "role_id")
    private Integer roleId;

    // getters, setters and constructor . . .

    public static class InnerIdClass implements Serializable {
        private Integer userId;
        private Integer roleId;
    }
}

相关问题