我创建了数据库,对于我的Android应用程序,女巫有16个表 . 我想使用ORMlite映射 . 问题是我没有找到你有复合id(多个主键)的例子 . 例如我有 table :
CREATE TABLE IF NOT EXISTS `Tourist_Guide`.`Cultural_activity` (
`City_Id` INT NOT NULL ,
`activity_Id` INT NOT NULL ,
`Cultural_activity_Id` INT NOT NULL AUTO_INCREMENT ,
`Name_Of_Cultural_activity` VARCHAR(30) NOT NULL ,
PRIMARY KEY (`Cultural_activity_Id`, `City_Id`, `activity_Id`) ,
INDEX `fk_Cultural_activity_activity1` (`City_Id` ASC, `activity_Id` ASC) ,
CONSTRAINT `fk_Cultural_activity_activity1`
FOREIGN KEY (`City_Id` , `activity_Id` )
REFERENCES `Tourist_Guide`.`activity` (`City_Id` , `activity_Id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
请你告诉我如何将这个表映射到类(这个类应该如何),是否可能?
4 回答
https://github.com/ServiceStack/ServiceStack.OrmLite/#limitations
您必须在每个唯一字段上方使用以下注释:
Here are the docs on uniqueCombo.
可以生成由其他字段的组合组成的人工ID字段 . 这可以通过将
@DatabaseField
注释中的useSetGet属性设置为true来完成 . 这使得ORMLite调用getter和setter方法,而不是使用反射 .在你的getter中,你可以返回你的领域的组合 .
在您的示例中,这看起来像这样:
http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/field/DatabaseField.html#useGetSet()
ServiceStack's OrmLite按设计不支持多个复合主键 . 为了使相同的POCO在数据库之外有用(例如NoSQL数据存储区,缓存提供程序等),OrmLite期望每个类型都有一个主键,我的默认值是
Id
属性(可以用ModelConfig类覆盖或[PrimaryKey]
,[Alias]
属性) .解决此限制的解决方法包括创建单个唯一ID但在复合主键上包含唯一约束,例如:
或者创建包含所有主键组合的伪列,例如: