我想将外部策略生成器用于我班级中的一个关键属性.最简单的方法如下所示:http: //blog.eyallupu.com/2011/01/hibernatejpa-identity-generators.html 或 http://www.coderanch.com/t/219256/ORM/databases/HBM-Annotation -Foreign-Generator 或 http://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example-annotation/
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
...
...
...
@GenericGenerator(
name = "myForeignGenerator",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "osoba"))
@Id
@GeneratedValue(generator = "myForeignGenerator")
@Column(name = "IdPracownik", unique = true, nullable = false)
public int getIdPracownik() {
return this.idPracownik;
}
Run Code Online (Sandbox Code Playgroud)
和Eclipse显示错误:
"类型不匹配:无法从参数转换为注释",下划线"@Parameter"注释.
这是为什么?
我有这个奇怪的问题,创建外键.
给出2个表格:
CREATE TABLE IF NOT EXISTS `groupdeals` (
`groupdeals_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(10) NOT NULL,
`merchant_id` int(11) NOT NULL,
`minimum_qty` int(11) NOT NULL,
`maximum_qty` int(11) NOT NULL,
`target_met_email` int(11) NOT NULL,
`coupon_barcode` text NOT NULL,
`coupon_merchant_address` int(11) NOT NULL,
`coupon_merchant_contact` int(11) NOT NULL,
`coupon_expiration_date` date DEFAULT NULL,
`coupon_price` int(11) NOT NULL,
`coupon_fine_print` int(11) NOT NULL,
`coupon_highlights` int(11) NOT NULL,
`coupon_merchant_description` int(11) NOT NULL,
`coupon_business_hours` int(11) NOT NULL,
`coupon_merchant_logo` int(11) NOT NULL,
`coupon_additional_info` text NOT NULL,
`position` …Run Code Online (Sandbox Code Playgroud) 问题陈述:-
以下是我的表格 -
Employee (EmployeeId, EmployeeName, EmployeeCountry)
Training (TrainingCode, TrainingName, TrainingType, TrainingTeacher)
Outcome (EmployeeId, TrainingCode, Grade)
Run Code Online (Sandbox Code Playgroud)
该TrainingType字段指定训练类型,例如CASSANDRA,SQL等
以下是我为上述用例创建的表格.我不知道如何创建第三个表 - 结果?并EmployeeId, TrainingCode聚集在这里是一个主键?
CREATE TABLE employee
(
EmployeeId int,
EmployeeName varchar(255),
EmployeeCountry varchar(255),
PRIMARY KEY (EmployeeId)
);
CREATE TABLE Training
(
TrainingCode int,
TrainingName varchar(255),
TrainingType varchar(255),
TrainingTeacher varchar(255),
PRIMARY KEY (TrainingCode)
);
Run Code Online (Sandbox Code Playgroud) 我对Django中的外键行为有疑问.
我在模型中定义了一个树层次结构,其中父子关系在子模型中表示为外键.现在,从叶级开始,我想检索父级,父级的父级等作为我定义的对象.
这可以通过简单地调用Leaf.objects.all()并通常从Python代码访问对象来实现.
但是这里遇到了麻烦.对于每个这样的调用,Django对适当的外部ID进行SELECT查询.这显然非常缓慢且效率低下.我想告诉Django类似"嘿,只需一次取出包括外键在内的所有数据,只需在数据库端进行连接和所有操作".这有点可行吗?
我有一个(简化的)场景,如下所示:
文件表:
id | title | text
===========================
1 | Title1 | "AAA"
2 | Title2 | "BBB"
3 | Title3 | "CCC"
Run Code Online (Sandbox Code Playgroud)
记录图片
id | doc_id | url
===================================================
1 | 1 | "http://some.domain.com/1.jpg"
2 | 1 | "http://some.domain.com/2.jpg"
3 | 2 | "http://some.domain.com/3.jpg"
4 | 4 | "http://some.domain.com/3.jpg"
Run Code Online (Sandbox Code Playgroud)
让我们来命名这些表documents和doc_pictures.我正在尝试创建一个查询,该查询将返回包含多个图片的所有文档.在此示例中,这意味着仅返回具有id的文档1.
限制和假设:
db是Mysql
当我尝试创建一个名为Sales的表时,MySQL会出现以下错误.我不知道问题是什么,我瞥了一眼http://dev.mysql.com/doc/refman/4.1/en/innodb-foreign-key-constraints.html,看看我犯了什么错,但是我说不出来.我在MySQL 5.6.11中遇到此错误,但在5.1.67中没有
Error
SQL query:
CREATE TABLE IF NOT EXISTS Sales(
name VARCHAR( 30 ) NOT NULL ,
address VARCHAR( 70 ) NOT NULL ,
serialsold VARCHAR( 20 ) UNIQUE NOT NULL ,
background_check VARCHAR( 9 ) NOT NULL ,
soldfor FLOAT NOT NULL ,
datesold TIMESTAMP DEFAULTNOW( ) ,
FOREIGN KEY ( serialsold ) REFERENCES Guns( serialnumber ) ON DELETE SET NULL ON UPDATE CASCADE ,
PRIMARY KEY ( background_check )
);
MySQL said: Documentation
#1215 - …Run Code Online (Sandbox Code Playgroud) 我必须在SQL Server中创建一组表.
那些是:
chips,用于识别要植入动物的芯片signals,因为每个芯片每小时产生一次信号signal receivers,如果芯片在半径范围内,可以接收信号的电台signal receivings,对于接收器已接收的信号我在创建这些表时遇到问题.
这是我的代码:
CREATE TABLE CHIPS (
ID INT PRIMARY KEY,
...(not related attributes)...
);
CREATE TABLE RECEIVERS (
ID_receiver INT PRIMARY KEY,
...(some other attributes, not related to the problem)...
);
CREATE TABLE SIGNALS (
ID_chip INT FOREIGN KEY REFERENCES CHIPS,
Signal_no INT,
Date DATETIME,
PRIMARY KEY (ID_chip, Signal_no)
);
CREATE TABLE SIGNAL_RECEIVINGS (
ID_receiver INT REFERENCES RECEIVERS ,
Id_chip INT REFERENCES SIGNALS(ID_chip),
Signal_no INT REFERENCES SIGNALS(Signal_no), …Run Code Online (Sandbox Code Playgroud) 我在尝试创建外键时不断收到错误1064:
ALTER TABLE `zajimavost`
ADD CONSTRAINT FK_zaj_bod
FOREIGN KEY def_bod
REFERENCES `bod`(`gid`)
ON UPDATE CASCADE ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)
它抱怨说:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES `bod`(`gid`)
ON UPDATE CASCADE ON DELETE CASCADE' at line 4
Run Code Online (Sandbox Code Playgroud)
无论有没有反引号我试过它,问题总是一样的.
我的桌子:
CREATE TABLE `zajimavost` (
`zaj_id` int(11) NOT NULL,
`lok_id` int(11) NOT NULL,
`nazev` varchar(255) COLLATE utf8_czech_ci NOT NULL,
`kategorie` int(11) NOT …Run Code Online (Sandbox Code Playgroud) 我一直在阅读有关EAV数据库的信息,大多数缺点似乎都与真的,真的,错误的EAV设计或从数据生成报告的难度有关。
通常,当您看到人们抱怨EAV时,他们使用少于三个的表来尝试复制RDBMS中单独的表+列的功能。有时,这意味着将所有内容(从小数到字符串)都存储在单个TEXT值列中。EAV还会破坏数据完整性的安全保护措施,如果您不小心的话,这可能会很糟糕。
但是,EAV确实提供了一种轻松的方式来跟踪历史数据,并允许我们在SQL和键值存储系统之间来回移动系统的某些部分。
如果我们根据类型区分不同的实体属性该怎么办。除了与特定属性和实体相关的正确索引值之外,这还使我们仍然可以处理belongsTo,Has,HasMany和HasManyThrough关系。
考虑以下两个基本实体
products (price -> decimal, title -> string, desc -> text, etc...)
attributes
options
[...]
int
datetime
string
text
decimal
relation
[id,foreign_key]
users (gender -> options, age -> int, username -> string, etc...)
attributes
options
[...]
int
datetime
string
text
decimal
relation
[id,foreign_key]
Run Code Online (Sandbox Code Playgroud)
众所周知,用户资料和产品是世界上最多样化的产品。每个公司处理它们的方式都不一样,并且针对他们的需求具有不同的“列”或“属性”。
以下是如何处理多个(嵌套和/或关系)实体的视图。
想法是,对于每个实体都有此主属性表,然后该主表指定如何查找和解释这些值。这使我们能够处理特殊情况,例如指向其他实体的外键以及诸如“选项”或十进制数字之类的东西。
entity_type {id,type,//即“博客”,“用户”,“产品”等。created_at}
entity {
id,
entity_type_id,
created_at
}
attr {
id,
entity_id,
type,
name,
created_at
}
option {
id,
attr_id, …Run Code Online (Sandbox Code Playgroud) 我想展示另一个类的一个属性.当前类有一个外键到我要获取属性的类.
# models.py
class Course(models.Model):
name = models.CharField(max_length=100)
degree = models.CharField(max_length=15)
university = models.ForeignKey(University)
def __unicode__(self):
return self.name
class Module(models.Model):
code = models.CharField(max_length=10)
course = models.ForeignKey(Course)
def __unicode__(self):
return self.code
def getdegree(self):
return Course.objects.filter(degree=self)
# admin.py.
class ModuleAdmin(admin.ModelAdmin):
list_display = ('code','course','getdegree')
search_fields = ['name','code']
admin.site.register(Module,ModuleAdmin)
Run Code Online (Sandbox Code Playgroud)
所以我要做的是获得模块使用"getdegree"的"程度".我在这里阅读了几个主题,并尝试了django文档,但我不是一个有经验的用户,所以即使我猜它是简单的,我无法弄清楚.谢谢!
foreign-keys ×10
sql ×5
mysql ×4
create-table ×2
django ×2
python ×2
6nf ×1
alter-table ×1
annotations ×1
database ×1
hibernate ×1
key-value ×1
model ×1
mysql-5.6 ×1
one-to-one ×1
primary-key ×1
sql-server ×1