我想在eclipse JPQL查询中编写这个SQL语句.它适用于SQL,但我不确定如何在eclipse中编写它.
SELECT *
FROM hardware h
WHERE h.`Staffid` LIKE '%150%'
Run Code Online (Sandbox Code Playgroud)
我在硬件表中的staffid是员工表的staffid主键的外键.所以硬件表中的工作人员是
private Staff staff;
Run Code Online (Sandbox Code Playgroud)
这是我编写的用于运行搜索的内容:
@SuppressWarnings("unchecked")
public List<Hardware> searchstaff(Staff a) {
try {
entityManager.getTransaction().begin();
Query query = entityManager
.createQuery("SELECT st from Hardware st where st.staff LIKE :x");
query.setParameter("x", a);
List<Hardware> list = query.getResultList();
entityManager.getTransaction().commit();
return list;
} catch (Exception e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但它表明
javax.servlet.ServletException: java.lang.IllegalStateException:
Exception Description: Transaction is currently active
Run Code Online (Sandbox Code Playgroud)
当我运行搜索.
任何人都可以帮我纠正吗?
我的问题很简单:
在Django Shell中,如何实例化需要外键属性的对象?
models.py
class Musician(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
instrument = models.CharField(max_length=100)
class Album(models.Model):
artist = models.ForeignKey(Musician)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
在django shell中...
p = Person(
first_name="Fred"
,last_name="Flintstone"
,instrument="guitar"
)
p.save()
...
a = Album(
artist = " " #<------ WHAT DO I PUT HERE ? :)))))
,name="u rock "
,release_date ="today"
,num_stars="4"
)
a.save()
Run Code Online (Sandbox Code Playgroud)
谢谢!
艾玛迪斯
我将一些数据插入以下MySQL表:
CREATE TABLE genotype
(
Genotype VARCHAR(20),
Fitness FLOAT NULL,
Tally INT NULL,
PRIMARY KEY (Genotype)
)ENGINE=InnoDB;
CREATE TABLE gene
(
Gene VARCHAR(20),
E FLOAT NOT NULL,
Q2 FLOAT NOT NULL,
PRIMARY KEY (Gene)
)ENGINE=InnoDB;
CREATE TABLE genotypegene
(
Genotype VARCHAR(20),
Gene VARCHAR(20),
FOREIGN KEY (Genotype) REFERENCES genotype(Genotype),
FOREIGN KEY (Gene) REFERENCES gene(Gene)
)ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
我首先将数据插入基因型/基因,但在尝试插入基因型时会出现以下错误:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`populationdb`.`genotypegene`, CONSTRAINT `genotypegene_ibfk_2` FOREIGN KEY (`Gene`) REFERENCES `gene` (`Gene`))
Run Code Online (Sandbox Code Playgroud)
我在这个表中插入的数据是:Genotype1,Gene1 …
create table Machine
(
Machine_ID int primary key,
Machine_Name varchar(30)
Machine_Title varchar(30)
)
create table Part
(
Part_ID int primary key,
Part_Name varchar(30),
Part_Description varchar(30)
)
//How do I make this table below?
create table Machine-Part
(
Machine_ID int foreign key references (Machine.Machine_ID),
Part_ID int foreign key references (Part.Part_ID)
Factory_Note varchar(30);
)
Run Code Online (Sandbox Code Playgroud)
Mysql抱怨语法有问题?
期望的结果:让表'Machine-Part'使用'Machine_ID'和'Part_ID'作为两个主键(它们都是外键).
我在我的mysql数据库中设置了一个外键:
ALTER TABLE `gameplayers` ADD CONSTRAINT `FK_GAMENUMBER` FOREIGN KEY (`GameNumber`) REFERENCES `games`(`GameNumber`) ON UPDATE CASCADE ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)
但是,我不确定我是否想要ON UPDATE和ON DELETE.
所以我进入我的phpAdmin,点击Structure选项卡的Index部分中的编辑铅笔图标,我得到这个:
警告:("PRIMARY"必须是主键的名称,而且只能是主键的名称!)
是否必须手动完成更改?即铅笔图标将无法正常工作.
另外:外键对mysql搜索具有相同的速度加成效果,类似于索引?
我有一张表,其中包含有关不同类型事件的信息,这些信息可由民事和工人两类人员完成
所以对于他们每个人我有他们各自的表
civil{ civil_id, name, age,telephone...} the primary key is civil_id
worker{ worker_id, name, duty, department...} the primary key is worker_id
Run Code Online (Sandbox Code Playgroud)
然后事件表包含所有可能事件的列表
event {type_of_event} the primary key is type_of_event
Run Code Online (Sandbox Code Playgroud)
然后我计划将信息存储在其他表中
与事件类型,完成工作的人(工人或民事)
id event_type date person
-----------------------------------
1 type1 12-12-12 x
2 type1 05-12-10 y
3 type2 02-12-12 y
Run Code Online (Sandbox Code Playgroud)
现在,在这个设计,我不知道如何与人谁如果做的工作,我就只有一个什么样的人(又名公民)我想只有亲自领域的civil_id存放在这最后的表....但如何知道这是民用还是工人,我还需要其他中间表吗?
我想在表中找到一个外键,但是有重命名/更改主键的更改.如何确定表中的外键和主键?
相关代码:
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_NAME = 'FK_Name'
Run Code Online (Sandbox Code Playgroud) 将数据插入空表,但得到错误1452.我不确定为什么MySQL在错误中提到NameInfo表.
CREATE TABLE NameInfo (
Language VARCHAR(7) NOT NULL,
Status VARCHAR(13) NOT NULL,
Standard VARCHAR(13) NOT NULL,
Name VARCHAR(13) NOT NULL,
Name_ID INT(4) NOT NULL,
Place_ID INT(9) NOT NULL,
Supplier_ID INT(4) NOT NULL,
Date_Supplied DATE NOT NULL,
PRIMARY KEY (Name_ID),
FOREIGN KEY (Supplier_ID) REFERENCES Supplier(Supplier_ID),
FOREIGN KEY (Place_ID) REFERENCES Place(Place_ID)
);
CREATE TABLE Departments (
Dept_ID INT(6) NOT NULL,
Dept_NAME VARCHAR(25) NOT NULL,
DeptHead_ID INT(6) NOT NULL,
DeptAA VARCHAR(20) NOT NULL,
ParentDept_ID INT(4) NOT NULL,
Location VARCHAR(10) NOT NULL,
DeptType …Run Code Online (Sandbox Code Playgroud) 以下是创建表的查询:
CREATE TABLE "FacilityRating"(
"FacilityRatingId" INTEGER PRIMARY KEY NOT NULL,
"Stars" VARCHAR,
"Facility_FacilityId" INTEGER,
"User_UserId" INTEGER,
FOREIGN KEY (Facility_FacilityId)
REFERENCES Facility(FacilityId)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (User_UserId)
REFERENCES User(UserId)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Run Code Online (Sandbox Code Playgroud)
然而,当我在插入新行Facility_FacilityId和User_UserId一些随机数,SQLite不给错误,但增加了也无妨.
这是一个快照:

有什么暗示这里发生了什么?我正在使用SQLite Manager,一个Mozilla Firefox附加组件
有谁知道如何导出,转储数据库的所有外键?我想修改字段,外键是有问题的,所以我想删除所有外键,并在更改完成后重新添加它们。
问候,威廉
foreign-keys ×10
mysql ×5
sql ×3
dump ×1
export ×1
jpql ×1
primary-key ×1
save ×1
shell ×1
sql-server ×1
sqlite ×1