Hibernate mapeamento de HashMap

Como faço um mapeamento de um HashMap?

Tentei persistir uma entidade que tem uma propriedade que é um HashMap e da um erro assim:

Caused by: java.sql.SQLException: Foi encontrado um erro de truncamento ao tentar reduzir VARCHAR () FOR BIT DATA 'XX-RESOLVE-XX' para o comprimento 255. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) ... 27 more Caused by: ERROR 22001: Foi encontrado um erro de truncamento ao tentar reduzir VARCHAR () FOR BIT DATA 'XX-RESOLVE-XX' para o comprimento 255. at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.iapi.types.SQLBinary.checkHostVariable(Unknown Source) at org.apache.derby.exe.acf81e0010x011bx55dexe506x00000035aa585.e0(Unknown Source) at org.apache.derby.impl.services.reflect.DirectCall.invoke(Unknown Source) at org.apache.derby.impl.sql.execute.RowResultSet.getNextRowCore(Unknown Source) at org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(Unknown Source) at org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(Unknown Source) at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source) at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)

Como vc fez o mapeamento da sua classe? vc colocou alguma anotação ou sou o XML para mudar alguma coisa no atributo do tipo HashMap?

Vc ja tem o banco de dados criado ou ta deixando ele criar para vc?

Coloca a sua classe aí, e se vc ja tiver criado o banco de dados previamente, coloca o esquema da sua tabela.

Não tenho base de dados, estou usando HBM2DDL create.

[code]
private HashMap<Integer, BigDecimal> salarioBase;

public HashMap<Integer, BigDecimal> getSalarioBase() {
return this.salarioBase;
}

public void setSalarioBase(HashMap<Integer, BigDecimal> salarioBase) {
this.salarioBase = salarioBase;
}[/code]

Maravilha, consegui:

@CollectionOfElements(fetch = FetchType.EAGER)
private Map<Integer, BigDecimal> salarioBase = new HashMap<Integer, BigDecimal>();

public Map<Integer, BigDecimal> getSalarioBase() {
	return this.salarioBase;
}

public void setSalarioBase(Map<Integer, BigDecimal> salarioBase) {
	this.salarioBase = salarioBase;
}

Tem que usar a annotation @CollectionOfElements e deve ser declarado como Map. Se declarar como HashMap o hibernate não entende.

[quote=brunoleite]Maravilha, consegui:

@CollectionOfElements(fetch = FetchType.EAGER)
private Map<Integer, BigDecimal> salarioBase = new HashMap<Integer, BigDecimal>();

public Map<Integer, BigDecimal> getSalarioBase() {
	return this.salarioBase;
}

public void setSalarioBase(Map<Integer, BigDecimal> salarioBase) {
	this.salarioBase = salarioBase;
}

Tem que usar a annotation @CollectionOfElements e deve ser declarado como Map. Se declarar como HashMap o hibernate não entende.[/quote]

Blz kra… ainda bem q resolveu…

que complexo