Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 5.2 Spring 4.3映射异常:无法确定的类型:sun.security.util.Password_Hibernate_Hibernate Mapping - Fatal编程技术网

Hibernate 5.2 Spring 4.3映射异常:无法确定的类型:sun.security.util.Password

Hibernate 5.2 Spring 4.3映射异常:无法确定的类型:sun.security.util.Password,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我正在尝试启动Hibernate项目,但由于我的Customer类中的一个属性字段的类型为Password,因此该项目无法启动,因为它无法从中创建Db列 我曾尝试在属性字段上方和getter上方使用@Column(columnDefinition=“varchar(20)”)注释密码字段,但两者都没有帮助 有什么线索吗 下面是课程: package be.mobyus.ie5.entities; import sun.security.util.Password; import javax

我正在尝试启动Hibernate项目,但由于我的Customer类中的一个属性字段的类型为Password,因此该项目无法启动,因为它无法从中创建Db列

我曾尝试在属性字段上方和getter上方使用
@Column(columnDefinition=“varchar(20)”)
注释密码字段,但两者都没有帮助

有什么线索吗

下面是课程:

package be.mobyus.ie5.entities;


import sun.security.util.Password;

import javax.persistence.*;
import java.util.Collection;

@Entity
public class Customer {

    @Id
private Long id;
private String username;

private Password password;
private String name;
private String firstName;

@OneToMany(targetEntity=Order.class, fetch= FetchType.EAGER)
private Collection<Order> orders;

/***********************************************/

    public Customer(){

    }

    /***********************************************/


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Column(columnDefinition = "character varying(22)")
    public Password getPassword() {
        return password;
    }

    public void setPassword(Password password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public Collection<Order> getOrders() {
        return orders;
    }

    public void setOrders(Collection<Order> orders) {
        this.orders = orders;
    }
}
包be.mobyus.ie5.entities;
导入sun.security.util.Password;
导入javax.persistence.*;
导入java.util.Collection;
@实体
公共类客户{
@身份证
私人长id;
私有字符串用户名;
私人密码;
私有字符串名称;
私有字符串名;
@OneToMany(targetEntity=Order.class,fetch=FetchType.EAGER)
私人托收令;
/***********************************************/
公众客户(){
}
/***********************************************/
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
@列(columnDefinition=“字符变化(22)”)
公共密码getPassword(){
返回密码;
}
公共无效设置密码(密码){
this.password=密码;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公开募捐令(){
退货订单;
}
公共作废集合订单(托收订单){
这个。订单=订单;
}
}
我得到以下错误:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: sun.security.util.Password, at table: Customer, for columns: [org.hibernate.mapping.Column(password)]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at be.mobyus.ie5.SpringRunner.main(SpringRunner.java:10)
Caused by: org.hibernate.MappingException: Could not determine type for: sun.security.util.Password, at table: Customer, for columns: [org.hibernate.mapping.Column(password)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:455)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:422)
    at org.hibernate.mapping.Property.isValid(Property.java:226)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:597)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:265)
    at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:451)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
    at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511)
    at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:495)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
    ... 12 more
线程“main”org.springframework.beans.factory.BeanCreationException中的异常:创建类路径资源[applicationContext hibernate.xml]中定义的名为“sessionFactory”的bean时出错:调用init方法失败;嵌套异常为org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(密码)]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:742)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)
位于be.mobyus.ie5.SpringRunner.main(SpringRunner.java:10)
原因:org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(Password)]
位于org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:455)
位于org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:422)
位于org.hibernate.mapping.Property.isValid(Property.java:226)
位于org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:597)
位于org.hibernate.mapping.RootClass.validate(RootClass.java:265)
位于org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329)
位于org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:451)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
位于org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511)
位于org.springframework.orm.hibernate5.LocalSessionFactoryBean.AfterPropertieSet(LocalSessionFactoryBean.java:495)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 还有12个

显然,您可以使用spring框架中的Base64Util来加密/解密密码属性,并将其作为varchar存储在DB中