我刚开始冬眠。写一个复合字体。当我运行代码时,我得到一个错误。所有物
映射的列数错误:请帮助我缺少什么?
我的组合类型如下
public class EncryptedAsStringType implements CompositeUserType {
@Override
public String[] getPropertyNames() {
return new String[] { "stockId", "stockCode", "stockName","stockDescription" };
}
@Override
public Type[] getPropertyTypes() {
//stockId, stockCode,stockName,modifiedDate
return new Type[] {
Hibernate.INTEGER, Hibernate.STRING, Hibernate.STRING,Hibernate.STRING
};
}
@Override
public Object getPropertyValue(final Object component, final int property)
throws HibernateException {
Object returnValue = null;
final Stock auditData = (Stock) component;
if (0 == property) {
returnValue = auditData.getStockId();
} else if (1 == property) {
returnValue = auditData.getStockCode();
} else if (2 == property) {
returnValue = auditData.getStockName();
} return returnValue;
}
@Override
public void setPropertyValue(final Object component, final int property,
final Object setValue) throws HibernateException {
final Stock auditData = (Stock) component;
}
@Override
public Object nullSafeGet(final ResultSet resultSet,
final String[] names,
final SessionImplementor paramSessionImplementor, final Object paramObject)
throws HibernateException, SQLException {
//owner here is of type TestUser or the actual owning Object
Stock auditData = null;
final Integer createdBy = resultSet.getInt(names[0]);
//Deferred check after first read
if (!resultSet.wasNull()) {
auditData = new Stock();
System.out.println(">>>>>>>>>>>>"+resultSet.getInt(names[1]));
System.out.println(">>>>>>>>>>>>"+resultSet.getString(names[2]));
System.out.println(">>>>>>>>>>>>"+resultSet.getString(names[3]));
System.out.println(">>>>>>>>>>>>"+resultSet.getString(names[4]));
}
return auditData;
}
@Override
public void nullSafeSet(final PreparedStatement preparedStatement,
final Object value, final int property,
final SessionImplementor sessionImplementor)
throws HibernateException, SQLException {
if (null == value) {
} else {
final Stock auditData = (Stock) value;
System.out.println("::::::::::::::::::::::::::::::::"+auditData.getStockCode());
System.out.println("::::::::::::::::::::::::::::::::"+auditData.getStockDescription());
System.out.println("::::::::::::::::::::::::::::::::"+auditData.getStockId());
System.out.println("::::::::::::::::::::::::::::::::"+auditData.getStatus());
}
}
我的域类股票有五个属性。(股票ID、股票代码、股票名称、状态、股票描述)
我需要声明字段股票描述为复合字段类型。
private Integer stockId;
private String stockCode;
private String stockName;
private String status;
private String stockDescription;
//Constructors
@Column(name = "STOCK_CC", unique = true, nullable = false, length = 20)
@Type(type="com.mycheck.EncryptedAsStringType")
@Columns(columns = { @Column(name="STOCK_ID"),
@Column(name="STOCK_CODE"),
@Column(name="STOCK_NAME")
})
public String getStockDescription() {
return stockDescription;
}
}
当我尝试执行股票插入时。我得到的错误错误创建bean与名称
在类路径资源[spring/config/./database/Hibernate.xml]中定义的“sessionFactory”:
调用init方法失败。嵌套的异常是org。冬眠映射异常:
属性映射的列数错误:com.stock.model.Stock.stock描述类型:
通用域名格式。我的支票。加密密码字符串类型
我哪里做错了?
人们可以从代码示例和原始问题的注释中提取答案,但是为了节省每个人的阅读时间,我已经编译了一个快速摘要。
如果声明一个将类型映射到n列的CompositeUserType
,则除了@type
注释外,还必须在@columns
中声明n列。例子:
public class EncryptedAsStringType implements CompositeUserType {
@Override
public String[] getPropertyNames() {
return new String[] { "stockId", "stockCode", "stockName","stockDescription" };
}
// ...
}
此CompositeUserType
映射到4个单独的列,因此必须声明4个单独的@ColVIII
注释:
@Type(type="com.mycheck.EncryptedAsStringType")
@Columns(columns = {
@Column(name="STOCK_ID"),
@Column(name="STOCK_CODE"),
@Column(name="STOCK_NAME"),
@Column(name="STOCK_DESCRIPTION")
})
public String getStockDescription() {
return stockDescription;
}
就这样,Hibernate很高兴。
我有一个实体,看起来像这样: 输入数据是一个
注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 列映射用于标识应该从数据库查询或写入哪些列数据。 惯例 按照惯例,实体类型属性会被设置为映射到与该属性同名的数据列上。 数据注解 可以使用数据注解来配置实体类型属性所映射的数据列。 public
的默认行为 mapper() 在映射的 Table 到映射的对象属性中,每个属性都根据列本身的名称命名(特别是 key 属性 Column )这种行为可以通过几种方式进行修改。 从属性名称清楚地命名列 默认情况下,映射与 Column 与映射属性的相同-具体来说,它与 Column.key 属性对 Column ,默认与 Column.name . 指定给映射到的python属性的名称 Colum
我有一个RDD格式为RDD[((Long,Long),(Long,Long))],我需要隐藏或转换为RDD[(Long,Long),(Long,Long,Long,Long))],其中第二个RDD元组基于第一个RDD的函数。 我正在尝试实现这个基于地图的功能,但是,我认为在这里做了一些错误的事情。请帮我解决这个问题。
> 状态: } 我在控制台得到的是: 或在创建类时 在这种情况下,如何正确创建实体或在表之间创建引用?
我想使用Java流按对用户列表进行分组。 例如,我有。