diff --git a/lib/relation-definition.js b/lib/relation-definition.js
index 85126895..4d44ff51 100644
--- a/lib/relation-definition.js
+++ b/lib/relation-definition.js
@@ -2045,7 +2045,10 @@ RelationDefinition.embedsOne = function(modelFrom, modelToRef, params) {
     methods: params.methods,
   });
 
-  var opts = {type: modelTo};
+  var opts = Object.assign(
+    params.options && params.options.property ? params.options.property : {},
+    {type: modelTo}
+  );
 
   if (params.default === true) {
     opts.default = function() { return new modelTo(); };
@@ -2441,9 +2444,14 @@ RelationDefinition.embedsMany = function embedsMany(modelFrom, modelToRef, param
     embed: true,
   });
 
-  modelFrom.dataSource.defineProperty(modelFrom.modelName, propertyName, {
-    type: [modelTo], default: function() { return []; },
-  });
+  var opts = Object.assign(
+    params.options && params.options.property ? params.options.property : {},
+    {
+      type: [modelTo], default: function() { return []; },
+    }
+  );
+
+  modelFrom.dataSource.defineProperty(modelFrom.modelName, propertyName, opts);
 
   if (typeof modelTo.dataSource.connector.generateId !== 'function') {
     modelFrom.validate(propertyName, function(err) {
diff --git a/test/relations.test.js b/test/relations.test.js
index 53808087..301143f2 100644
--- a/test/relations.test.js
+++ b/test/relations.test.js
@@ -4283,13 +4283,20 @@ describe('relations', function() {
       );
       Address = tmp.define('Address', {street: String}, {idInjection: false});
       Other = db.define('Other', {name: String});
-    });
-
-    it('can be declared using embedsOne method', function(done) {
       Person.embedsOne(Passport, {
         default: {name: 'Anonymous'}, // a bit contrived
         methods: {check: function() { return true; }},
+        options: {
+          property: {
+            postgresql: {
+              columnName: 'passport_item',
+            },
+          },
+        },
       });
+    });
+
+    it('can be declared using embedsOne method', function(done) {
       Person.embedsOne(Address); // all by default
       db.automigrate(['Person'], done);
     });
@@ -4303,6 +4310,11 @@ describe('relations', function() {
       p.passportItem.destroy.should.be.a.function;
     });
 
+    it('respects property options on the embedded property', function() {
+      Person.definition.properties.passport.should.have.property('postgresql');
+      Person.definition.properties.passport.postgresql.should.eql({columnName: 'passport_item'});
+    });
+
     it('should setup a custom method on accessor', function() {
       var rel = Person.relations['passportItem'];
       rel.defineMethod('other', function() {
@@ -4704,7 +4716,15 @@ describe('relations', function() {
     });
 
     it('can be declared', function(done) {
-      Person.embedsMany(Address);
+      Person.embedsMany(Address, {
+        options: {
+          property: {
+            postgresql: {
+              dataType: 'json',
+            },
+          },
+        },
+      });
       db.automigrate(['Person'], done);
     });
 
@@ -4733,6 +4753,11 @@ describe('relations', function() {
       });
     });
 
+    it('respects property options on the embedded property', function() {
+      Person.definition.properties.addresses.should.have.property('postgresql');
+      Person.definition.properties.addresses.postgresql.should.eql({dataType: 'json'});
+    });
+
     it('should create embedded items on scope', function(done) {
       Person.findOne(function(err, p) {
         p.addressList.create({street: 'Street 2'}, function(err, address) {