[MySQL] Problema com atributo em formato List

Ola galera,

Estou com um problema ao utilizar List no Hibernate/MySQL;

Em seguida, segue o meu codigo e o erro.

@Entity
public class Pointage {

    @Id
    @GeneratedValue
    private Long id;
    
    private Double nbHeure;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar datePourPointage;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar dateSysteme;
    
    private List<String> caracPointage = new ArrayList<String>();  //problema

    
    @OneToMany
    List<Personnes> personnes = new ArrayList<Personnes>();
    
    //gets and sets

[list]
INFO: Hibernate Validator not found: ignoring
Exception in thread “main” java.lang.ExceptionInInitializerError
at com.alstom.ems2.model.App.main(App.java:25)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: ems2PU] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at com.alstom.ems2.dao.Donnees.(Donnees.java:19)
… 1 more
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, for columns: [org.hibernate.mapping.Column(caracPointage)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
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:1102)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
… 5 more
Java Result: 1
[/list]

O que deve ser utilizado ? Ou como se deve declarar a List para funcionar
Ja testei Set, Collection e todos apresentam “erro” parecido.

Obrigado galera.

Olá amigo, você pretende utilizar esse List juntamente ao Banco de dados? Se sim, porque ele ainda não está mapeado? Caso não for usar marque ele com o @Transient

Ola darksteel3000, sim, preciso utilizar essa List no banco de dados, como seria o mapeamento dela ?

Estou usando Hibernate JPA 1.0

Grato,
Amplexo

Depende amigo. Da mesma forma que você mapeou essa:

@OneToMany List&lt;Personnes&gt; personnes = new ArrayList&lt;Personnes&gt;();

Você mapeia a outra, ai vai depender do caso, porque? Porque tipo, essa acima você mapeou como 1-N. No seu contexto a outra que falta também será 1-N ? Se sim, vai o @OneToMany, senão vale a pena ler esse artigo: http://www.futurepages.org/wiki/lib/exe/fetch.php?media=quickstart:hibernate_anotacoes.pdf dê uma boa olhada nos capitulos 11, 12 e 13. Neles contem tudo o que você precisa saber sobre os mapeamentos.

Sim, mas netse caso, a list de String é um atributo da classe Pointage, entao, ela nao deve possuir anotacao de referencia entre classe, e sim de construcao para tabela.

Pesquisei na internet e vi que o JPA 2.0 da opcao de mapeamento com List, no caso, utilizando @ElementCollection, baxei o Hibernate versao 4.0.10 final, e ele da suporte para essa anotacao com o JPA 2.0, criei uma nova biblioteca de persistencia e adicionei os arquivos .jar necessario para poder utiliza-lo.

http://www.mohanarun.com/how-to-make-netbeans-use-hibernate-4-and-not-hibernate-3-2-5/

Até agora deu tudo certo.
O meu codigo ficou da seguinte forma:

@ElementCollection(fetch= FetchType.LAZY) @Column(name="CARAC_POINTAGE") private List<String> caracPointage = new ArrayList<String>();

é o maldito JPA 1.0.
Vou ler a sua indicacao.

Obrigado

Ok, qualquer coisa só falar !