Schemefier Creates a BIGINT for a MappedStringForeignKey
Schemifier doesn't seem to respect the MappedStringForeignKey type and creates a BIGINT column, as you can see in the following output:
INFO - CREATE TABLE packets (temp DOUBLE , id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY , mac BIGINT UNSIGNED , dt DATETIME , mah DOUBLE , lux DOUBLE , rssi DOUBLE) ENGINE = InnoDB
INFO - ALTER TABLE packets ADD CONSTRAINT packets_PK PRIMARY KEY(id)
INFO - CREATE INDEX packets_mac ON packets ( mac )
I can override fieldCreatorString for the foreign key but I don't think I should have to. This is with 1.1-SNAPSHOT.
And the relevant parts of my models:
class Node extends KeyedMapper[String, Node] {
def getSingleton = Node
/* MAC address as primary key /
def primaryKeyField = mac
object mac extends MappedStringIndex(this, 17) with IndexedField [String] {
override def dbDisplay_? = true
override lazy val defaultValue = randomString(maxLen)
/ allow user-defined primary key */
override def writePermission_? = true
override def dbAutogenerated_? = false
private var myDirty = false
override def dirty_? = myDirty
override def dirty_?(b : Boolean) = { myDirty = b; super.dirty_?(b) }
override def fieldCreatorString(dbType: DriverType, colName: String): String = colName+" CHAR("+maxLen+") NOT NULL "
}
}
class Packet extends LongKeyedMapper[Packet] with IdPK {
def getSingleton = Packet
object node extends MappedStringForeignKey(this, Node, 17) {
// Change the default behavior to add a database index for this column.
override def dbIndexed_? = true
override def dbColumnName = "mac"
}
INFO - CREATE TABLE packets (temp DOUBLE , id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY , mac BIGINT UNSIGNED , dt DATETIME , mah DOUBLE , lux DOUBLE , rssi DOUBLE) ENGINE = InnoDB
INFO - ALTER TABLE packets ADD CONSTRAINT packets_PK PRIMARY KEY(id)
INFO - CREATE INDEX packets_mac ON packets ( mac )
I can override fieldCreatorString for the foreign key but I don't think I should have to. This is with 1.1-SNAPSHOT.
And the relevant parts of my models:
class Node extends KeyedMapper[String, Node] {
def getSingleton = Node
/* MAC address as primary key /
def primaryKeyField = mac
object mac extends MappedStringIndex(this, 17) with IndexedField [String] {
override def dbDisplay_? = true
override lazy val defaultValue = randomString(maxLen)
/ allow user-defined primary key */
override def writePermission_? = true
override def dbAutogenerated_? = false
private var myDirty = false
override def dirty_? = myDirty
override def dirty_?(b : Boolean) = { myDirty = b; super.dirty_?(b) }
override def fieldCreatorString(dbType: DriverType, colName: String): String = colName+" CHAR("+maxLen+") NOT NULL "
}
}
class Packet extends LongKeyedMapper[Packet] with IdPK {
def getSingleton = Packet
object node extends MappedStringForeignKey(this, Node, 17) {
// Change the default behavior to add a database index for this column.
override def dbIndexed_? = true
override def dbColumnName = "mac"
}
Leave a comment
on 2010-02-06 19:48 *
By github.importer
Imported from GitHub: http://github.com/dpp/liftweb/issues/79/find