diff --git a/src/main/java/com/google/gwtorm/client/CompoundKey.java b/src/main/java/com/google/gwtorm/client/CompoundKey.java
index ac6572e..8224cac 100644
--- a/src/main/java/com/google/gwtorm/client/CompoundKey.java
+++ b/src/main/java/com/google/gwtorm/client/CompoundKey.java
@@ -24,6 +24,7 @@
  *
  * @param <P> the parent key type. Use {@link Key} if no parent key is needed.
  */
+@SuppressWarnings("serial")
 public abstract class CompoundKey<P extends Key<?>> implements Key<P>,
     Serializable {
   /** @return the member key components, minus the parent key. */
diff --git a/src/main/java/com/google/gwtorm/client/IntKey.java b/src/main/java/com/google/gwtorm/client/IntKey.java
index 7ed8bb9..e7995a3 100644
--- a/src/main/java/com/google/gwtorm/client/IntKey.java
+++ b/src/main/java/com/google/gwtorm/client/IntKey.java
@@ -24,6 +24,7 @@
  *
  * @param <P> the parent key type. Use {@link Key} if no parent key is needed.
  */
+@SuppressWarnings("serial")
 public abstract class IntKey<P extends Key<?>> implements Key<P>, Serializable {
   /**
    * @return id of the entity instance.
diff --git a/src/main/java/com/google/gwtorm/client/LongKey.java b/src/main/java/com/google/gwtorm/client/LongKey.java
index 33a4367..0fc4ae6 100644
--- a/src/main/java/com/google/gwtorm/client/LongKey.java
+++ b/src/main/java/com/google/gwtorm/client/LongKey.java
@@ -24,6 +24,7 @@
  *
  * @param <P> the parent key type. Use {@link Key} if no parent key is needed.
  */
+@SuppressWarnings("serial")
 public abstract class LongKey<P extends Key<?>> implements Key<P>, Serializable {
   /**
    * @return id of the entity instance.
diff --git a/src/main/java/com/google/gwtorm/client/ShortKey.java b/src/main/java/com/google/gwtorm/client/ShortKey.java
index 3f666f9..59783f4 100644
--- a/src/main/java/com/google/gwtorm/client/ShortKey.java
+++ b/src/main/java/com/google/gwtorm/client/ShortKey.java
@@ -24,6 +24,7 @@
  *
  * @param <P> the parent key type. Use {@link Key} if no parent key is needed.
  */
+@SuppressWarnings("serial")
 public abstract class ShortKey<P extends Key<?>> implements Key<P>,
     Serializable {
   /**
diff --git a/src/main/java/com/google/gwtorm/client/StringKey.java b/src/main/java/com/google/gwtorm/client/StringKey.java
index 85e328f..0944a8b 100644
--- a/src/main/java/com/google/gwtorm/client/StringKey.java
+++ b/src/main/java/com/google/gwtorm/client/StringKey.java
@@ -24,6 +24,7 @@
  *
  * @param <P> the parent key type. Use {@link Key} if no parent key is needed.
  */
+@SuppressWarnings("serial")
 public abstract class StringKey<P extends Key<?>> implements Key<P>,
     Serializable, Comparable<StringKey> {
   /**
diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
index d405285..edd92e8 100644
--- a/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
+++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
@@ -51,6 +51,7 @@
     db = s;
   }
 
+  @SuppressWarnings("serial")
   protected LinkedHashMap<K, byte[]> cache() {
     if (cache == null) {
       cache = new LinkedHashMap<K, byte[]>(8) {
@@ -564,6 +565,7 @@
     return IndexRow.CODEC.encodeToByteArray(IndexRow.forKey(now, key));
   }
 
+  @SuppressWarnings("serial")
   private static class IndexException extends RuntimeException {
     final OrmException cause;
 
diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
index f1f9c7a..7208d8f 100644
--- a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
+++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
@@ -327,9 +327,11 @@
     }
   }
 
+  @SuppressWarnings("serial")
   private static class KeyExists extends RuntimeException {
   }
 
+  @SuppressWarnings("serial")
   private static class NoMoreValues extends RuntimeException {
   }
 }
diff --git a/src/main/java/com/google/gwtorm/schema/QueryParseException.java b/src/main/java/com/google/gwtorm/schema/QueryParseException.java
index db71fa0..dac499c 100644
--- a/src/main/java/com/google/gwtorm/schema/QueryParseException.java
+++ b/src/main/java/com/google/gwtorm/schema/QueryParseException.java
@@ -14,6 +14,7 @@
 
 package com.google.gwtorm.schema;
 
+@SuppressWarnings("serial")
 public class QueryParseException extends Exception {
   public QueryParseException(final String message) {
     super(message);
diff --git a/src/main/java/com/google/gwtorm/schema/QueryParseInternalException.java b/src/main/java/com/google/gwtorm/schema/QueryParseInternalException.java
index 262f779..6c71851 100644
--- a/src/main/java/com/google/gwtorm/schema/QueryParseInternalException.java
+++ b/src/main/java/com/google/gwtorm/schema/QueryParseInternalException.java
@@ -14,6 +14,7 @@
 
 package com.google.gwtorm.schema;
 
+@SuppressWarnings("serial")
 class QueryParseInternalException extends RuntimeException {
   QueryParseInternalException(String message) {
     super(message);
diff --git a/src/main/java/com/google/gwtorm/server/OrmConcurrencyException.java b/src/main/java/com/google/gwtorm/server/OrmConcurrencyException.java
index 124d072..6837d51 100644
--- a/src/main/java/com/google/gwtorm/server/OrmConcurrencyException.java
+++ b/src/main/java/com/google/gwtorm/server/OrmConcurrencyException.java
@@ -15,6 +15,7 @@
 package com.google.gwtorm.server;
 
 /** Indicates one or more entities were modified concurrently. */
+@SuppressWarnings("serial")
 public class OrmConcurrencyException extends OrmException {
   public OrmConcurrencyException() {
     super("Concurrent modification detected");
diff --git a/src/main/java/com/google/gwtorm/server/OrmDuplicateKeyException.java b/src/main/java/com/google/gwtorm/server/OrmDuplicateKeyException.java
index 6899752..24e6d8b 100644
--- a/src/main/java/com/google/gwtorm/server/OrmDuplicateKeyException.java
+++ b/src/main/java/com/google/gwtorm/server/OrmDuplicateKeyException.java
@@ -15,6 +15,7 @@
 package com.google.gwtorm.server;
 
 /** Indicates one or more entities were concurrently inserted with the same key. */
+@SuppressWarnings("serial")
 public class OrmDuplicateKeyException extends OrmException {
   public OrmDuplicateKeyException(final String msg) {
     super(msg);
diff --git a/src/main/java/com/google/gwtorm/server/OrmException.java b/src/main/java/com/google/gwtorm/server/OrmException.java
index cfde956..a5acd32 100644
--- a/src/main/java/com/google/gwtorm/server/OrmException.java
+++ b/src/main/java/com/google/gwtorm/server/OrmException.java
@@ -17,6 +17,7 @@
 /**
  * Any data store read or write error.
  */
+@SuppressWarnings("serial")
 public class OrmException extends Exception {
   public OrmException(final String message) {
     super(message);
diff --git a/src/main/java/com/google/gwtorm/server/OrmRuntimeException.java b/src/main/java/com/google/gwtorm/server/OrmRuntimeException.java
index 472b187..5220a3b 100644
--- a/src/main/java/com/google/gwtorm/server/OrmRuntimeException.java
+++ b/src/main/java/com/google/gwtorm/server/OrmRuntimeException.java
@@ -17,6 +17,7 @@
 /**
  * Any data store read or write error.
  */
+@SuppressWarnings("serial")
 public class OrmRuntimeException extends RuntimeException {
   public OrmRuntimeException(final String message) {
     super(message);
diff --git a/src/test/java/com/google/gwtorm/client/IntKeyTestCase.java b/src/test/java/com/google/gwtorm/client/IntKeyTestCase.java
index 2222500..a2632d2 100644
--- a/src/test/java/com/google/gwtorm/client/IntKeyTestCase.java
+++ b/src/test/java/com/google/gwtorm/client/IntKeyTestCase.java
@@ -27,6 +27,7 @@
 
 
 public class IntKeyTestCase {
+  @SuppressWarnings("serial")
   private abstract static class IntKeyImpl<T extends Key<?>> extends IntKey<T> {
     @Column(id = 1)
     int id;
@@ -46,18 +47,21 @@
     }
   }
 
+  @SuppressWarnings("serial")
   private static class Parent extends IntKeyImpl<Key<?>> {
     public Parent(int n) {
       super(n);
     }
   }
 
+  @SuppressWarnings("serial")
   private static class UnrelatedEntity extends IntKeyImpl<Key<?>> {
     public UnrelatedEntity(int n) {
       super(n);
     }
   }
 
+  @SuppressWarnings("serial")
   private static class Child extends IntKeyImpl<Parent> {
     private Parent parent;
 
diff --git a/src/test/java/com/google/gwtorm/client/LongKeyTestCase.java b/src/test/java/com/google/gwtorm/client/LongKeyTestCase.java
index be77f90..2f41215 100644
--- a/src/test/java/com/google/gwtorm/client/LongKeyTestCase.java
+++ b/src/test/java/com/google/gwtorm/client/LongKeyTestCase.java
@@ -26,6 +26,7 @@
 
 
 public class LongKeyTestCase {
+  @SuppressWarnings("serial")
   private abstract static class LongKeyImpl<T extends Key<?>> extends
       LongKey<T> {
     @Column(id = 1)
@@ -46,18 +47,21 @@
     }
   }
 
+  @SuppressWarnings("serial")
   private static class Parent extends LongKeyImpl<Key<?>> {
     public Parent(long n) {
       super(n);
     }
   }
 
+  @SuppressWarnings("serial")
   private static class UnrelatedEntity extends LongKeyImpl<Key<?>> {
     public UnrelatedEntity(long n) {
       super(n);
     }
   }
 
+  @SuppressWarnings("serial")
   private static class Child extends LongKeyImpl<Parent> {
     private Parent parent;
 
diff --git a/src/test/java/com/google/gwtorm/client/StringKeyTestCase.java b/src/test/java/com/google/gwtorm/client/StringKeyTestCase.java
index 30d64a0..4e6c8ba 100644
--- a/src/test/java/com/google/gwtorm/client/StringKeyTestCase.java
+++ b/src/test/java/com/google/gwtorm/client/StringKeyTestCase.java
@@ -26,6 +26,7 @@
 
 
 public class StringKeyTestCase {
+  @SuppressWarnings("serial")
   private abstract static class StringKeyImpl<T extends Key<?>> extends
       StringKey<T> {
     @Column(id = 1)
@@ -46,18 +47,21 @@
     }
   }
 
+  @SuppressWarnings("serial")
   private static class Parent extends StringKeyImpl<Key<?>> {
     public Parent(String n) {
       super(n);
     }
   }
 
+  @SuppressWarnings("serial")
   private static class UnrelatedEntity extends StringKeyImpl<Key<?>> {
     public UnrelatedEntity(String n) {
       super(n);
     }
   }
 
+  @SuppressWarnings("serial")
   private static class Child extends StringKeyImpl<Parent> {
     private Parent parent;
 
diff --git a/src/test/java/com/google/gwtorm/data/Address.java b/src/test/java/com/google/gwtorm/data/Address.java
index a21479e..cc4c907 100644
--- a/src/test/java/com/google/gwtorm/data/Address.java
+++ b/src/test/java/com/google/gwtorm/data/Address.java
@@ -18,6 +18,7 @@
 import com.google.gwtorm.client.StringKey;
 
 public class Address {
+  @SuppressWarnings("serial")
   public static class Key extends StringKey<Person.Key> {
     @Column(id = 1)
     protected Person.Key owner;
diff --git a/src/test/java/com/google/gwtorm/data/Person.java b/src/test/java/com/google/gwtorm/data/Person.java
index 5839e11..4984802 100644
--- a/src/test/java/com/google/gwtorm/data/Person.java
+++ b/src/test/java/com/google/gwtorm/data/Person.java
@@ -19,6 +19,7 @@
 
 
 public class Person {
+  @SuppressWarnings("serial")
   public static class Key extends StringKey<com.google.gwtorm.client.Key<?>> {
     @Column(id = 1, length = 20)
     protected String name;
