org.hibernate.MappingException с использованием аннотаций - PullRequest
1 голос
/ 01 февраля 2010

Я использую аннотации JPA для этих двух классов:

@Entity
@RooJavaBean
@RooToString
@RooEntity
@MappedSuperclass
public abstract class BaseEntity {

  @Temporal(TemporalType.TIMESTAMP)
  @DateTimeFormat(style = "S-")
  private Calendar created;

  @Temporal(TemporalType.TIMESTAMP)
  @DateTimeFormat(style = "S-")
  private Calendar updated;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "id")
  private Long id;

  @Version
  @Column(name = "version")
  protected Integer version;

  public Long getId() {
  return id;
  }

  public void setId(Long id) {
  this.id = id;
  }

  public Integer getVersion() {
  return version;
  }

  public void setVersion(Integer version) {
  this.version = version;
  }

  @PrePersist
  protected void onCreate() {
  created = Calendar.getInstance();
  }

  @PreUpdate
  protected void onUpdate() {
  updated = Calendar.getInstance();
  }

}
@Entity
@RooJavaBean
@RooToString
@RooEntity
public class Event extends BaseEntity {

  private Score challenger;
  private Score defender;
  ...
}

@Entity
@RooJavaBean
@RooToString
@RooEntity
public class Score extends BaseEntity {

  @ManyToOne
  private Team team;
  private Event event;
  private Integer score;
  private Boolean accepted;
}

Я получаю исключение:

Caused by: org.hibernate.MappingException: Could not determine type for: edu.unlv.cs.ladders.entities.Score, at table: event, for columns: [org.hibernate.mapping.Column(challenger)]
 at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:269)
 at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
 at org.hibernate.mapping.Property.isValid(Property.java:185)
 at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:440)
 at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
 at org.hibernate.cfg.Configuration.validate(Configuration.java:1108)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1293)
 at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
 at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)

Связано ли это с наличием двух отдельных полей для доступа к одному и тому же классу? Должен ли я быть более информативным и указывать имена столбцов или что-то в этом роде?

1 Ответ

4 голосов
/ 01 февраля 2010

Вам необходимо аннотировать свойства Score с помощью ManyToOne или OneToOne.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...