Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 使用@MappedSuperclass、@Entity、@manytomany时无法确定:java.util.Set的类型 @MappedSuperclass 公共抽象类标识/*扩展了AbstractPersistable*/ 实现可序列化、可克隆{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) 受保护的整数id; 公共整数getId(){ 返回id; } 公共无效集合id(整数id){ 这个.setId(id); } } @实体 @表(name=“user”) //@AttributeOverride(name=“id”,column=@column(name=“id”)) 公共类用户扩展标识{ @许多 @JoinTable(name=“user\u role”, joinColumns=@JoinColumn(name=“user\u id”), inverseJoinColumns=@JoinColumn(name=“role\u id”,referencedColumnName=“id”)) 公共集getRoles(){ 返回角色; } 公共无效集合角色(集合角色){ this.roles=角色; } } @实体 @表(name=“role”) //@AttributeOverride(name=“id”,column=@column(name=“id”)) 公共类角色扩展身份{ private Set users=new HashSet(); @许多(mappedBy=“角色”) 公共集getUsers(){ 返回用户; } 公共void集合用户(集合用户){ this.users=用户; } }_Hibernate_Jpa_Spring Orm_Mappingexception - Fatal编程技术网

Hibernate 使用@MappedSuperclass、@Entity、@manytomany时无法确定:java.util.Set的类型 @MappedSuperclass 公共抽象类标识/*扩展了AbstractPersistable*/ 实现可序列化、可克隆{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) 受保护的整数id; 公共整数getId(){ 返回id; } 公共无效集合id(整数id){ 这个.setId(id); } } @实体 @表(name=“user”) //@AttributeOverride(name=“id”,column=@column(name=“id”)) 公共类用户扩展标识{ @许多 @JoinTable(name=“user\u role”, joinColumns=@JoinColumn(name=“user\u id”), inverseJoinColumns=@JoinColumn(name=“role\u id”,referencedColumnName=“id”)) 公共集getRoles(){ 返回角色; } 公共无效集合角色(集合角色){ this.roles=角色; } } @实体 @表(name=“role”) //@AttributeOverride(name=“id”,column=@column(name=“id”)) 公共类角色扩展身份{ private Set users=new HashSet(); @许多(mappedBy=“角色”) 公共集getUsers(){ 返回用户; } 公共void集合用户(集合用户){ this.users=用户; } }

Hibernate 使用@MappedSuperclass、@Entity、@manytomany时无法确定:java.util.Set的类型 @MappedSuperclass 公共抽象类标识/*扩展了AbstractPersistable*/ 实现可序列化、可克隆{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) 受保护的整数id; 公共整数getId(){ 返回id; } 公共无效集合id(整数id){ 这个.setId(id); } } @实体 @表(name=“user”) //@AttributeOverride(name=“id”,column=@column(name=“id”)) 公共类用户扩展标识{ @许多 @JoinTable(name=“user\u role”, joinColumns=@JoinColumn(name=“user\u id”), inverseJoinColumns=@JoinColumn(name=“role\u id”,referencedColumnName=“id”)) 公共集getRoles(){ 返回角色; } 公共无效集合角色(集合角色){ this.roles=角色; } } @实体 @表(name=“role”) //@AttributeOverride(name=“id”,column=@column(name=“id”)) 公共类角色扩展身份{ private Set users=new HashSet(); @许多(mappedBy=“角色”) 公共集getUsers(){ 返回用户; } 公共void集合用户(集合用户){ this.users=用户; } },hibernate,jpa,spring-orm,mappingexception,Hibernate,Jpa,Spring Orm,Mappingexception,堆栈跟踪: @MappedSuperclass public abstract class IdEntity /*extends AbstractPersistable<Integer>*/ implements Serializable,Cloneable { @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Integer id; public Integ

堆栈跟踪:

@MappedSuperclass
public abstract class IdEntity /*extends AbstractPersistable<Integer>*/
        implements Serializable,Cloneable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected Integer id;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.setId(id);
    }
}


    @Entity
@Table(name = "user")
//@AttributeOverride( name="id", column = @Column(name="id") )
public class User extends IdEntity{

    @ManyToMany
    @JoinTable(name = "user_role",
            joinColumns = @JoinColumn(name = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
    public Set<Role> getRoles() {
        return roles;
    }

    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }

}


@Entity
@Table(name = "role")
//@AttributeOverride( name="id", column = @Column(name="id") )
public class Role extends IdEntity {

    private Set<User> users = new HashSet<User>();

    @ManyToMany(mappedBy = "roles")
    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }

}
原因:javax.persistence.PersistenceException:[PersistenceUnit:com.rootls]无法构建EntityManagerFactory
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
位于org.hibernate.ejb.HibernatePersistence.createContainerEntityManager工厂(HibernatePersistence.java:74)
位于org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:286)
位于org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.AfterPropertieSet(AbstractEntityManagerFactoryBean.java:310)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
... 50多
原因:org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(角色)]
位于org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:305)
位于org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:289)
位于org.hibernate.mapping.Property.isValid(Property.java:238)
位于org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468)
位于org.hibernate.mapping.RootClass.validate(RootClass.java:270)
位于org.hibernate.cfg.Configuration.validate(Configuration.java:1294)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1736)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:94)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
... 56多

问题在于,在
身份
类中,您注释了ID字段(不是getter),在子类
用户
角色
中,您注释了getter,这是不一致的。您必须只注释字段,或者只注释getter。有关类似问题,请参见问题


或者,将
@Access(AccessType.PROPERTY)
添加到子类
角色
用户
用户
类中没有名为
设置角色
的属性。你是如何编译的

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: com.rootls] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:286)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
    ... 50 more
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: user, for columns: [org.hibernate.mapping.Column(roles)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:305)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:289)
    at org.hibernate.mapping.Property.isValid(Property.java:238)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1294)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1736)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
    ... 56 more