Olá pessoal!
Eu estou com um problema:
Presico mapear um List<String> então vi na documentação dessa forma:
@ElementCollection
private List<String> listaAcervos;
Mas isso não está gravando nada no banco…
Olá pessoal!
Eu estou com um problema:
Presico mapear um List<String> então vi na documentação dessa forma:
@ElementCollection
private List<String> listaAcervos;
Mas isso não está gravando nada no banco…
Não entendi a relação do List com o BD…
Como assim?
Eu preciso gravar um monte de string… E elas vão estar em lista…
Mas isso não funciona, nada é salvo no banco de dados…
O código que tu postou não faz nenhum conexão com banco de dados… Ele apenas diz que existe um List de Strings chamado listaAcervos que ainda não foi inicializado…
A tua dúvida é percorrer esse List ou enviar os dados do List para um BD?
@Entity
@Table(name = "acv_exposicao")
public class Exposicao {
@Id
private Long codigo;
@Column(nullable = false, length = 200)
private String titulo;
@Column(length = 1000)
private String descricao;
@ElementCollection
private List<String> listaAcervos;
@Column(name = "data_inicial")
private Calendar dataInicio;
@Column(name = "data_final")
private Calendar dataFim;
@ManyToOne
private Usuarios usuarioEdicao;
@Column(name = "data_edicao", nullable = false)
private Calendar dataEdicao;
@Transient
private TipoSituacao situacao;
// getters e setters
}
Ahhh… Não tenho muita experiência com frameworks cara… Vou deixar para alguém mais experiente…
Por enquanto estou aprendendo a fazer tudo na mão pra não fica mal depois…
Foi mal…
vou vc usa JDBC ou um dos frameworks de persistência de dados(JPA, Hibernate, EclipseLink) sem isso nunca vc gravará num BD, pelo menos q eu saiba…
Eu uso Hibernate…
Isso não salva?
posta ae entaum como vc manda pro hibernate…
Eu só populo a List de String e dou session.save();
Eu estou com problemas para inserir isso no banco.
Eu não queria ter que criar uma Classe para poder fazer um mapeamento MTM tendo somente uma única string nele.
amigo vc está perdido nas idéias do hibernate o q ele salva é uma classe tipow
public void salvar(T bean) {
session.save(bean);
}
}
nesse caso o T bean é genérico ou seja tenho 10 tabelas e esse genérico salva todas no BD.
Moço.
Eu tenho uma classe chamada Exposicao, ela tem como atributo que é uma Lista de String. Aqui está o código da classe (VO ou Modelo de tabela, como vc preferir):@Entity
@Table(name = "acv_exposicao")
public class Exposicao {
@Id
private Long codigo;
@Column(nullable = false, length = 200)
private String titulo;
@Column(length = 1000)
private String descricao;
@ElementCollection
private List<String> listaAcervos;
@Column(name = "data_inicial")
private Calendar dataInicio;
@Column(name = "data_final")
private Calendar dataFim;
@ManyToOne
private Usuarios usuarioEdicao;
@Column(name = "data_edicao", nullable = false)
private Calendar dataEdicao;
@Transient
private TipoSituacao situacao;
// getters e setters
}
public void adicionar(Exposicao exposicao) throws Exception {
try {
exposicao.setCodigo(controleId.getNovoId(session, Exposicao.class));
this.formatarAtributos(exposicao);
session.getTransaction().begin();
session.save(exposicao);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
throw e;
}
}
e como está seu relacionamento? Está List tem alguma referência na tabela? Ou ela vem de outra tabela?
É só uma lista de String, eu quero salvar um monte de Strings, eu não quero ter que criar uma classe que vai conter somente a String nela.
a sua tabela no banco tem algum campo pra essa string?
Eu não crio as tabelas no Banco de Dados, eu deixo o Hibernate criá-las para mim. Portanto, como ele não está salvando nada la, não tenho tabela nenhuma.
vc conferiu se pelo menos criou o banco?
Criou tudo diretinho, menos um campo para essa lista.
por isso q naum salva, num tem o campo lá…pra q serve essa anotação?[strong]@ElementCollection[/strong]
Teoricamente essa é a anotação que permitiria que eu persistisse uma lista de String.
sinceramente naum sei se vc vai conseguir salvar essa lista de string, pq vc só consegue salvar uma List de algo qdo se tem uma relação entre 2 ou mais tabelas OU salvar uma string pra cada código tipow cod=1 lista=“tralalá”, cod=2, lista=“pataká” e assim vai axo…
Consegui.
Só foi preciso um ajuste na annotation:
@ElementCollection(fetch = FetchType.LAZY)
private List<String> listaAcervos;
Dessa forma, funciona, certinho.
Caro Rafael Guerreiro,
Como você definiu o tipo do campo do banco de dados?
Grato,
Zé Felipe