hibernate - Hibernate 5.2 Spring 4.3 MappingException:无法确定类型:sun.security.util.Password
问题描述
我正在尝试启动我的 Hibernate 项目,但由于我的 Customer 类中的属性字段之一是 Password 类型,因此该项目将无法启动,因为它无法从中创建 Db 列。
我尝试@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;
}
}
我收到以下错误:
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
解决方案
您显然可以使用 spring 框架中的 Base64Util 来加密/解密 Password 属性并将其作为 varchar 存储在数据库中
推荐阅读
- sql - Postgres 视图中的重复列名合并
- flutter - 文档与集合
- c# - 在打开 PDF 中使用变量名时出现问题(使用 Spire.Pdf)
- microsoft-graph-api - 使用 MS Graph API 向邮件添加警告消息
- c# - 解析器错误消息:无法加载类型“MyApplication.Default”
- python - 用于获取 redfin 估计值的 Redfin 刮板
- r - 如何使用ggplot将两个不同比例的y轴放在绘图的同一侧?
- python - 哪种方法更快?
- html - SVG 对象最初是垂直加载的,然后在浏览器中水平重新排列
- mysql - 我的 SQL 请求不会在 localhost 和 prod 中返回相同的内容