Так .... у меня есть объект Aula, который я хочу создать, и затем я хочу продолжать использовать JPA. Я даю необходимые параметры, у меня есть постоянство. xml настроен с этим классом, и у меня есть Entity Manager
package business;
@Entity
@NamedQueries({
@NamedQuery(name=Aula.FIND_BY_ID, query="SELECT a FROM Aula a WHERE a.id = :" + Aula.AULA_ID),
@NamedQuery(name=Aula.FIND_BY_NOME, query="SELECT a FROM Aula a WHERE a.nome = :" + Aula.AULA_NOME),
@NamedQuery(name=Aula.FIND_ALL, query="SELECT a FROM Aula a"),
})
@Table(name = "AULA")
public class Aula {
public static final String FIND_BY_ID = "Aula.findById";
public static final String AULA_ID = "id";
public static final String FIND_BY_NOME = "Aula.findByNome";
public static final String AULA_NOME = "nome";
public static final String FIND_ALL = "Aula.findAll";
@Id @GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private int id;
@Column(name = "NOME")
private String nome;
@Convert(converter = LocalTimeAttributeConverter.class)
@Column(name = "HORAINICIO")
private LocalTime horaInicio;
@Column(name = "DURACAO")
private int duracao;
@Column(name = "NRALUNOS")
private int nrAlunos;
@ManyToOne(cascade = ALL)
@JoinColumn(name = "INSTALACAO_ID", referencedColumnName = "ID")
private Instalacao instalacao;
@Enumerated(EnumType.STRING)
@Column(name = "ESTADO")
private Estado estado;
@Enumerated(EnumType.STRING)
@ElementCollection(fetch = EAGER)
@JoinTable(name = "AULA_DIASSEMANA", joinColumns = @JoinColumn(name = "Aula_ID"))
@Column(name = "DIASSEMANA", nullable = false)
private List<DiaSemana> diasSemana;
@ManyToOne
private Modalidade modalidade;
@OneToMany(cascade = ALL, fetch = FetchType.EAGER) @JoinColumn(name = "AULA_ID")
private List<AulaAtiva> aulasMarcadas;
@OneToMany(cascade = ALL, fetch = FetchType.EAGER) @JoinColumn(name = "AULA_ID")
private List<Inscricao> regulares;
Aula(){}
public Aula(Modalidade modalidade, String nomeAula, List<String> dias, LocalTime horaInicio, int duracao) throws AppException {
this.diasSemana = new ArrayList<>();
this.aulasMarcadas = new ArrayList<>();
this.regulares = new ArrayList<>();
criarDias(dias);
this.estado = Estado.INATIVA;
this.nome = nomeAula;
this.modalidade = modalidade;
this.duracao = duracao;
this.horaInicio = horaInicio;
}
/**
* Define a instalacao que esta aula ira decorrer
* @param instalacao - instalacao que esta aula ira decorrer
*/
public void setInstalacao(Instalacao instalacao) {
this.instalacao=instalacao;
}
private void criarDias(List<String> dias) throws AppException {
for(String dia: dias) {
switch(dia.toLowerCase()) {
case "segunda":
this.diasSemana.add(DiaSemana.SEGUNDA);
break;
case "terca":
this.diasSemana.add(DiaSemana.TERCA);
break;
case "quarta":
this.diasSemana.add(DiaSemana.QUARTA);
break;
case "quinta":
this.diasSemana.add(DiaSemana.QUINTA);
break;
case "sexta":
this.diasSemana.add(DiaSemana.SEXTA);
break;
case "sabado":
this.diasSemana.add(DiaSemana.SABADO);
break;
case "domingo":
this.diasSemana.add(DiaSemana.DOMINGO);
break;
default:
throw new AppException("Dia nao existente");
}
}
}
}
Я делаю это для создания и сохранения нового объекта (например, EntityManager)
Aula aula = new Aula(modalidade, nomeAula, dias, horaInicio, duracao);
em.persist(aula);
И когда я пытаюсь упорствовать, я получаю это:
Object: business.Aula@e3b3b2f is not a known entity type.
Может кто-нибудь помочь мне, пожалуйста? Я не могу понять, почему это происходит и как это исправить