Я получаю следующее сообщение об ошибке:org.hibernate.MappingException - Что означает это исключение?
Could not determine type for: java.util.Set, at table: Ruleset, for columns: [org.hibernate.mapping.Column(ruleset)]
класс фрагмент кода:
@Entity
public class Ruleset implements java.io.Serializable {
@Id
@OneToOne(targetEntity = RulesetStatus.class)
private Integer id;
private Set<Rule> ruleset = new HashSet<Rule>(0);
public Ruleset() {
}
public Ruleset(Integer ID, Set<Rule> ruleset) {
this.id = ID;
this.ruleset = ruleset;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Set<Rule> getRuleSet(){
return this.ruleset;
}
public void setRuleset(Set<Rule> ruleset) {
this.ruleset = ruleset;
}
}
Я понял, что аннотирования набор правил, как Transient делает проблему уйти, но не набор правил будет сохранялся в БД. Как сообщить спящий режим о типе этого поля?
Я очень новичок в Hibernate, поэтому я полностью потерялся здесь. __________________________Edit __________________________ Фактическое отношение должно было быть @ManyToMany, как правило, может быть во многих наборах правил, а набор правил может иметь много правил.
Я добавил аннотацию @ManyToMany к набору, а затем не имел соответствующего набора в классе правил для сопоставления. Я добавил набор в класс правил, добавив к нему аннотацию @ManyToMany, и нет никаких ошибок.
Правильно ли это?
Вы пропускаете аннотацию @ManyToOne на наборе правил? – Jens
Meaby здесь у вас есть ответ https://docs.jboss.org/hibernate/orm/3.6/reference/es-ES/html/collections.html или https://docs.oracle.com/cd/E19798-01 /821-1841/giqvn/index.html – aSoler
Вы также должны опубликовать соответствующие части вашей схемы db. –