我正在寻找一些关于使用MySQL和PHP检索和显示数据的最佳方法的建议.
我有3个表,所有1对多关系如下:
每个SCHEDULE都有许多OVERRIDES,每个覆盖有很多LOCATIONS.我想检索这些数据,以便它可以显示在一个PHP页面上,例如列出我的SCHEDULES.在每个计划列表中列出OVERRIDES,并在每个覆盖列表中列出LOCATIONS.
选项1 - 执行此操作的最佳方法是创建3个单独的SQL查询,然后将这些查询写入PHP对象吗?然后,我可以遍历每个数组并检查父数组上的匹配项.
选项2 - 我已经考虑了很多关于连接但是做两个正确的连接将为我的所有3个表中的每个入口返回一行.
任何想法和意见将不胜感激.
此致,本.
我试图通过jpa持久化/合并一个全新的对象图,但似乎持久性的顺序是不正确的,因为它试图保存对其父项存在约束的子对象.
public class ObjectA implements Serializable {
...
@OneToMany(cascade = CascadeType.ALL, mappedBy = "objectAId")
private List<ObjectB> objectBList;
...
}
Run Code Online (Sandbox Code Playgroud)
和
public class ObjectB implements Serializable {
...
@JoinColumn(name = "OBJECT_A_ID", referencedColumnName = "ID", nullable = false)
@ManyToOne(optional = false)
private ObjectA objectAId;
...
}
Run Code Online (Sandbox Code Playgroud)
我将创建一个新的实体ObjectA以及几个新的ObjectB实体并将它们添加到对象A.当我合并ObjectA时,我得到以下内容:
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.mycompany.data.ObjectB.objectAId
Run Code Online (Sandbox Code Playgroud)
我错过了什么或做错了什么?
我想创建一个表格,我的用户可以将彼此之间的友谊关联起来.同时这个表将与我试图处理的各种其他表之间的一对多关系一起工作.
现在我在考虑这样的事情
member_id,friend_id,活跃,日期
member_id将是进行调用的用户的列,friend_id将是他们尝试绑定的朋友的列,active是切换的排序0 = pending,1 = active,date只是记录的日期该特定行的最后一个活动.
现在我的困惑在于,如果我要查询,我通常会查询member_id,然后根据相关的friend_id来查询剩余的查询,以便相应地向正确的人显示数据.因此,考虑到这种逻辑,这使我认为每个请求必须有2行.其中请求的member_id和请求的friend_id插入表中,然后是相反的,所以我每次都可以相应地进行查询.所以在本质上它就像对于这个特定的表所请求的每一个动作的双重浸入一样,我需要做出2个像它一样的动作来使它工作.就优化而言,这对我来说根本没有意义.所以在我的所有问题中,处理这类关系数据的正确方法是什么?或者我真的在想这是一种处理它的方法吗?
我正在努力学习NHibernate 3.2 built-in mapping by code api
(不流利的NHibernate).你能帮我勾画出这些实体之间的一对多关系吗?
public class Member {
public virtual int Id { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Comment {
public virtual int Id { get; set; }
public virtual Member { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
更新:
我这样映射Id
:
Id(
t => t.Id,
t => {
t.Generator(Generators.HighLow, g => g.Params(new { max_low = 100 }));
t.Column(typeof(TEntity).Name + "Id");
});
Run Code Online (Sandbox Code Playgroud) 我有一个用户表和兴趣表,兴趣表中的行数是finiate,我正在尝试模拟senario,每个用户都有一组兴趣,这是我的代码:
@Entity
@Table(name="user")
public class User extends Model{
@OneToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="user_interest")
public List<Interest> interests;
}
@Entity
@Table(name="interest")
public class Interest extends Model{
@Id
public Long id;
public String name;
public String image;
}
Run Code Online (Sandbox Code Playgroud)
我自然希望有联合表但是进化忽略了创建连接表并尝试通过在兴趣表中添加额外的列来实现.这是
create table interest (
19 id bigint auto_increment not null,
20 user_id bigint not null,
21 name varchar(255),
22 image varchar(255),
23 constraint pk_interest primary key (id))
.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么??如何使用ebean在play2.2中创建一个简单的OneToMany关系WITH join表?
感谢致敬
我有两个实体:a Person
和an Address
.
Person
可以有一个Address
Address
可以自给自足Person
.我创造了这样的关系:
地址
/**
* @ORM\OneToMany(targetEntity="Person", mappedBy="address", cascade={"detach"})
*/
protected $persons;
Run Code Online (Sandbox Code Playgroud)
人
/**
* @ORM\ManyToOne(targetEntity="Address", inversedBy="persons", cascade={"detach"})
* @ORM\JoinColumn(name="address_id", referencedColumnName="id")
*/
protected $address;
Run Code Online (Sandbox Code Playgroud)
当我现在尝试删除与其结果Address
相关的Person
结果时,当然是在" 完整性约束违规 "中.我怎么能告诉学说简单地分离的Address
距离Person
.如果尝试使用cascade={"detach"}
两者但没有任何反应.
我正在使用JPA 2 + Hibernate 4.2.6开发Java项目,我遇到了一个奇怪的行为.
在我的模型中,我有两个相关的参与者:Question
和Answer
@Entity
public class Question {
// ...
@OneToMany(mappedBy = "question", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Answer> answers;
// ...
}
@Entity
public class Answer {
// ...
@ManyToOne(optional = false)
@JoinColumn(name = "question_id", nullable = false)
private Question question;
// ...
}
Run Code Online (Sandbox Code Playgroud)
这很有效:所有Answer
与某个相关的Question
都正确加载.
但现在我需要改变answers
收集的Set
方式List
.我改变了类型并再次运行应用程序,现在我得到了几个重复answers
...为什么可能?我知道List
允许重复,但我的数据库中没有重复的记录,为什么我得到这些?
我在先前版本的Hibernate中读到了一些类似的错误,但我希望它们在上一版本中得到解决...我错了吗?
注:我需要改变Set
成List
,因为我需要保持有关信息以便寻找答案,可能的话,要改变这种秩序.
我有父对象和嵌套对象.我可以获得嵌套的列表,GET /parent/{parentId}/nested
但是我无法POST/PUT成功.在POST结果上,我得到HTTP 204,父亲有空的嵌套对象列表.
在日志中,我看到Hibernate不会在DB中插入任何内容.在调试期间,我看到用于deserealization的Jackson Object Mapper获得" org.springframework.hateoas.Resources<java.lang.Object>
"作为JavaType.
这是我的POST的真实例子:
curl 'http://localhost:8000/api/users/402880e554b8f7960154b8f7adbc0000/orders/' -i -X POST -H 'Authorization: Basic OLOLO==' -H 'Accept: application/json' -H 'deviceCurrencyCode: USD' -H 'Content-Type: application/json; charset=UTF-8' -d '{"orderPrice": 0,"tax": 0,"shippingCost": 0,"credits": 0,"addresses": [{"firstName": "Figli","lastName": "Migli","zipCode": "5555","city": "Riga","country": "Tlmltr","phone": "7777","address": "Adddr"}],"status": "status"}'
我知道这是可能的POST /nested '{"parent":"/link/to/parent"}'
.但是,如果它是通过父级GET嵌套对象的方式,为什么我不能这样POST/PUT/PATCH它们?我查了一下,是RESTfull,似乎是.
我有两节课:
public class Employee extends RealmObject {
@PrimaryKey
long id;
String name
Department department;
//getters setters etc.
}
public class Department extends RealmObject {
@PrimaryKey
int id;
String name;
//getters setters etc.
}
Run Code Online (Sandbox Code Playgroud)
这是一对多的关系。一个部门可以有多名员工。我试图提出一些疑问。
realm.where(Employee.class).equalTo("department.name", "deptName").findAll()
realm.where(Department.class).equalTo("employee.name", "empName").findAll()
Run Code Online (Sandbox Code Playgroud)
第一个正在工作,第二个有错误:
无效的查询:员工未引用类。
如何使第二个工作?我是否必须在Department类中创建员工的RealmList?
我想在此查询中获取所有具有指定名称雇员的部门。
android one-to-many relationship realm realm-mobile-platform
当我编译此C代码并在计算机上运行12次时,每次都会得到一个不同的9位负数。另一台计算机上的另一个clang编译器产生的10位正整数不同。我期望得到一个奇怪的值,因为向右移动负数是不确定的,但是让我感到惊讶的是该值不是一个唯一的数字。相反,我使用相同的输入获取多个值。为什么这不是数学函数?
#include <stdio.h>
int main(void) {
printf("%d", 1 >> -1);
return 0;
}
Run Code Online (Sandbox Code Playgroud) one-to-many ×10
hibernate ×2
java ×2
jpa ×2
mysql ×2
android ×1
c ×1
collections ×1
database ×1
doctrine ×1
ebean ×1
nhibernate ×1
php ×1
realm ×1
relationship ×1
rest ×1
spring-web ×1
sql ×1
symfony ×1