title: How to persist a property of type List<String> in JPA?
body: <p>What is the smartest way to get an entity with a field of type List persisted?</p>
  
  <h2>Command.java</h2>
  
  <pre><code>package persistlistofstring;
  
  import java.io.Serializable;
  import java.util.ArrayList;
  import java.util.List;
  import javax.persistence.Basic;
  import javax.persistence.Entity;
  import javax.persistence.EntityManager;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.Persistence;
  
  @Entity
  public class Command implements Serializable {
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      Long id;
      @Basic
      List&lt;String&gt; arguments = new ArrayList&lt;String&gt;();
  
      public static void main(String[] args) {
          Command command = new Command();
  
          EntityManager em = Persistence
                  .createEntityManagerFactory("pu")
                  .createEntityManager();
          em.getTransaction().begin();
          em.persist(command);
          em.getTransaction().commit();
          em.close();
  
          System.out.println("Persisted with id=" + command.id);
      }
  }
  </code></pre>
  
  <hr>
  
  <p>This code produces:</p>
  
  <pre><code>&gt; Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named pu: Provider named oracle.toplink.essentials.PersistenceProvider threw unexpected exception at create EntityManagerFactory: 
  &gt; oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
  &gt; Local Exception Stack: 
  &gt; Exception [TOPLINK-30005] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
  &gt; Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: sun.misc.Launcher$AppClassLoader@11b86e7
  &gt; Internal Exception: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException
  &gt; Exception Description: predeploy for PersistenceUnit [pu] failed.
  &gt; Internal Exception: Exception [TOPLINK-7155] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException
  &gt; Exception Description: The type [interface java.util.List] for the attribute [arguments] on the entity class [class persistlistofstring.Command] is not a valid type for a serialized mapping. The attribute type must implement the Serializable interface.
  &gt;         at oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:143)
  &gt;         at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:169)
  &gt;         at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:110)
  &gt;         at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
  &gt;         at persistlistofstring.Command.main(Command.java:30)
  &gt; Caused by: 
  &gt; ...
  </code></pre>