diff --git a/src/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java b/src/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java
index d3c3b70..9828f4a 100644
--- a/src/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java
+++ b/src/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java
@@ -29,8 +29,14 @@
     final String name = column.getColumnName();
     final String t = getTrueLiteralValue();
     final String f = getFalseLiteralValue();
-    return "CHAR(1) NOT NULL DEFAULT " + f + " CHECK (" + name + " IN (" + t
-        + "," + f + "))";
+    final StringBuilder r = new StringBuilder();
+    r.append("CHAR(1)");
+    if (column.isNotNull()) {
+      r.append(" DEFAULT " + f);
+      r.append(" NOT NULL");
+    }
+    r.append(" CHECK (" + name + " IN (" + t + "," + f + "))");
+    return r.toString();
   }
 
   @Override
diff --git a/src/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java b/src/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java
index 6564218..890600f 100644
--- a/src/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java
+++ b/src/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java
@@ -27,8 +27,10 @@
   public String getSqlType(final ColumnModel column, final SqlDialect dialect) {
     final StringBuilder r = new StringBuilder();
     r.append("CHAR(1)");
-    r.append(" DEFAULT ' '");
-    r.append(" NOT NULL");
+    if (column.isNotNull()) {
+      r.append(" DEFAULT ' '");
+      r.append(" NOT NULL");
+    }
     return r.toString();
   }
 
diff --git a/src/com/google/gwtorm/schema/sql/SqlIntTypeInfo.java b/src/com/google/gwtorm/schema/sql/SqlIntTypeInfo.java
index a13a4c4..23c89da 100644
--- a/src/com/google/gwtorm/schema/sql/SqlIntTypeInfo.java
+++ b/src/com/google/gwtorm/schema/sql/SqlIntTypeInfo.java
@@ -31,6 +31,12 @@
 
   @Override
   public String getSqlType(final ColumnModel column, final SqlDialect dialect) {
-    return dialect.getSqlTypeName(getSqlTypeConstant()) + " DEFAULT 0 NOT NULL";
+    final StringBuilder r = new StringBuilder();
+    r.append(dialect.getSqlTypeName(getSqlTypeConstant()));
+    if (column.isNotNull()) {
+      r.append(" DEFAULT 0");
+      r.append(" NOT NULL");
+    }
+    return r.toString();
   }
 }
diff --git a/src/com/google/gwtorm/schema/sql/SqlLongTypeInfo.java b/src/com/google/gwtorm/schema/sql/SqlLongTypeInfo.java
index b266345..940c7fc 100644
--- a/src/com/google/gwtorm/schema/sql/SqlLongTypeInfo.java
+++ b/src/com/google/gwtorm/schema/sql/SqlLongTypeInfo.java
@@ -31,6 +31,12 @@
 
   @Override
   public String getSqlType(final ColumnModel column, final SqlDialect dialect) {
-    return dialect.getSqlTypeName(getSqlTypeConstant()) + " DEFAULT 0 NOT NULL";
+    final StringBuilder r = new StringBuilder();
+    r.append(dialect.getSqlTypeName(getSqlTypeConstant()));
+    if (column.isNotNull()) {
+      r.append(" DEFAULT 0");
+      r.append(" NOT NULL");
+    }
+    return r.toString();
   }
 }
diff --git a/src/com/google/gwtorm/schema/sql/SqlShortTypeInfo.java b/src/com/google/gwtorm/schema/sql/SqlShortTypeInfo.java
index 1686a20..c2f895e 100644
--- a/src/com/google/gwtorm/schema/sql/SqlShortTypeInfo.java
+++ b/src/com/google/gwtorm/schema/sql/SqlShortTypeInfo.java
@@ -31,6 +31,12 @@
 
   @Override
   public String getSqlType(final ColumnModel column, final SqlDialect dialect) {
-    return dialect.getSqlTypeName(getSqlTypeConstant()) + " DEFAULT 0 NOT NULL";
+    final StringBuilder r = new StringBuilder();
+    r.append(dialect.getSqlTypeName(getSqlTypeConstant()));
+    if (column.isNotNull()) {
+      r.append(" DEFAULT 0");
+      r.append(" NOT NULL");
+    }
+    return r.toString();
   }
 }
