Base de données: MySql 1.5.47 sur OS XColdFusion ORM crée un mauvais type de données
ORM Paramètres dans Application.cfc:
this.ormEnabled = true; this.ormsettings = { autogenmap = true, DBCreate = application.dbCreate, automanageSession = true, = application.dsn source de données, logSQL = application.logSQL, sqlScript = application.sqlScript };
News.cfc
/**
* These are the news items
* @persistent true
* @accessors true
* @output false
* @entityname "News"
* @table news
*/
component
{
property name="NewsId" type="string" fieldtype="id" ormtype="integer" generator="native" generated="insert";
property name="Teaser" type="string" sqltype="varchar(200)";
property name="Story" type="string" sqltype="varchar(500)";
property name="ProductLineId" type="numeric" sqltype="int" ormtype="int" fieldtype="many-to-one" cfc="ProductLine" fkcolumn="ProductLineId" foreignkeyname="fk_productline_news";
}
ProductLine.cfc
/**
* @persistent true
* @accessors true
* @output false
* @table productline
*/
component
{
property name="ProductLineId" sqltype="int" fieldtype="id" ;
property name="Label" type="string" sqltype="varchar(50)";
}
sortie de débogage de ORMReload()
[localhost]:10/05 21:32:00 [jrpp-70] HIBERNATE DEBUG -
[localhost]: create table news (
[localhost]: NewsId integer not null auto_increment,
[localhost]: Teaser varchar(200),
[localhost]: Story varchar(500),
[localhost]: **ProductLineId varchar(255)**,
[localhost]: primary key (NewsId)
[localhost]: )
[localhost]:10/05 21:32:00 [jrpp-70] HIBERNATE DEBUG -
[localhost]: create table productline (
[localhost]: ProductLineId int not null,
[localhost]: Label varchar(50),
[localhost]: primary key (ProductLineId)
[localhost]: )
[localhost]:10/05 21:32:01 [jrpp-70] HIBERNATE DEBUG -
[localhost]: alter table news
[localhost]: add index fk_productline_news (ProductLineId),
[localhost]: add constraint fk_productline_news
[localhost]: foreign key (ProductLineId)
[localhost]: references productline (ProductLineId)
La création db échoue lorsqu'il tente de créer la relation clé étrangère . Notez que le champ dans les nouvelles est un varchar (255). D'où vient cela? J'ai essayé de le définir comme un entier dans chaque endroit que je pourrais trouver mais il est toujours généré comme un varchar. Je pense que c'est pourquoi la relation échoue puisque les deux champs sont des types de données différents.
Qu'est-ce que je fais mal?
tout cela fonctionne et permet l'exportation de cform pour terminer, la relation ne semble pas exister dans MySQL. ProductLineId est toujours créé en tant que varchar (255). Il semble que cela devrait être int – anopres