【发布时间】:2017-08-21 23:46:28
【问题描述】:
我在映射 jpa 时遇到问题,请如果有人在使用 jpa 方面有更多经验并可以帮助我。
我在互联网上进行了一些搜索,但没有什么对我有用。
我希望我能得到一些解决!
谢谢!
这是我的代码:
Metologia.java
@Entity
@Table(name = "metodologias")
public class Metodologia {
@Id @GeneratedValue
private int id;
private String nombre;
@ManyToMany
@JoinTable(
name = "METODOLOGIA_CONDICION",
joinColumns = {@JoinColumn(name = "METODOLOGIA_ID")},
inverseJoinColumns = {@JoinColumn(name = "CONDICION_ID")}
)
private List<Condicion> condiciones;
public Metodologia(String n) {
this.nombre = n;
this.condiciones = new ArrayList<Condicion>();
}
public void addCondicion(Condicion con) {
this.condiciones.add(con);
}
public String getNombre() {
return this.nombre;
}
public ArrayList<ResultadoEmpresa> evaluarEmpresas(ArrayList<Empresa> empresas, ArrayList<Indicador> indicadores) throws Exception {
ArrayList<ResultadoEmpresa> resultados = new ArrayList<ResultadoEmpresa>();
ArrayList<ResultadoEmpresa> res;
empresas.forEach(emp->resultados.add(new ResultadoEmpresa(emp.getNombre(), 0)));
for (Condicion con : condiciones) {
res = con.evaluar(empresas, indicadores);
for (ResultadoEmpresa resemp : res)
for (ResultadoEmpresa emp : resultados)
if (emp.getEmpresa().equals(resemp.getEmpresa()))
emp.sumar(resemp.getValor());
}
return ordenarLista(resultados);
}
Comparator<ResultadoEmpresa> byValor = new Comparator<ResultadoEmpresa>() {
public int compare(ResultadoEmpresa left, ResultadoEmpresa right) {
if (left.getValor() > (right.getValor())) {
return -1;
} else {
return 1;
}
}
};
private ArrayList<ResultadoEmpresa> ordenarLista(ArrayList<ResultadoEmpresa> emp) {
Collections.sort(emp, byValor);
return emp;
}
}
这是执行时的错误报告,
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Comparator, at table: metodologias, for columns: [org.hibernate.mapping.Column(byValor)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)
at org.hibernate.mapping.Property.isValid(Property.java:241)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496)
【问题讨论】: