标签: orm

Django教程:什么是choice_set?

Django教程中有这一行,编写你的第一个Django应用程序,第1部分:

p.choice_set.create(choice='Not much', votes=0)
Run Code Online (Sandbox Code Playgroud)

如何被choice_set召唤存在,它是什么?

我想这choice部分是Choice本教程中使用的模型的小写版本,但它是什么choice_set?你能详细说说吗?


更新1:根据Ben James的回答,我在文档中找到了一个位置:跟随关系"向后".

python django orm

132
推荐指数
1
解决办法
2万
查看次数

JPA CascadeType.ALL不会删除孤儿

我在使用带有以下映射的JPA删除孤立节点时遇到问题

@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;
Run Code Online (Sandbox Code Playgroud)

我遇到了挂在数据库周围的孤立角色的问题.

我可以使用注释org.hibernate.annotations.CascadeHibernate特定标记,但显然我不想将我的解决方案绑定到Hibernate实现.

编辑:似乎JPA 2.0将包括对此的支持.

java orm hibernate jpa jpa-2.0

130
推荐指数
6
解决办法
16万
查看次数

Hibernate Annotations - 哪个更好,字段或属性访问?

这个问题与Hibernate Annotation Placement Question有些相关.

但我想知道哪个更好?通过属性访问或通过字段访问?各有哪些优缺点?

java orm annotations hibernate jpa

129
推荐指数
12
解决办法
11万
查看次数

一对多,多对一和多对多的区别?

好的,这可能是一个微不足道的问题,但我无法想象和理解差异以及何时使用每个差异.关于单向和双向映射等概念如何影响一对多/多对多关系,我也有点不清楚.我现在正在使用Hibernate,所以任何与ORM相关的解释都会有所帮助.

举个例子,假设我有以下设置:

public class Person{
    private Long personId;
    private Set<Skill> skills;
    //Getters and setters
}

public class Skill{
    private Long skillId;
    private String skillName;
    //Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

那么在这种情况下我会有什么样的映射?这个具体示例的答案肯定是值得赞赏的,但我也非常希望概述何时使用一对多和多对多以及何时使用连接表与连接列以及单向与双向.

orm many-to-many hibernate one-to-many

129
推荐指数
6
解决办法
9万
查看次数

JPA实体何时以及为何应该实现Serializable接口?

问题出在标题中.下面我刚才描述了我的一些想法和发现.

当我有非常简单的域模型(没有任何关系的3个表)时,我的所有实体都没有实现Serializable.

但是当域模型变得更复杂时,我得到了RuntimeException,它说我的一个实体没有实现Serializable.

我使用Hibernate作为JPA实现.

我想知道:

  1. 是特定于供应商的要求/行为吗?
  2. 我的可序列化实体会发生什么?它们是否可以序列化以便存储或传输?
  3. 在哪一刻,有必要使我的实体可序列化?

java orm serialization hibernate jpa

128
推荐指数
10
解决办法
7万
查看次数

PHP ORMs:Doctrine vs. Propel

我正在使用symfony开始一个新项目,该项目很容易与DoctrinePropel集成,但我当然需要做出选择......我想知道那里有更多有经验的人是否有一般的优点和/或缺点这两个中的任何一个?

非常感谢.

编辑: 感谢所有的回复,有用的东西.对于这个问题没有真正正确的答案,所以我只会将获得最受欢迎的选票标记为已批准.

php orm propel doctrine symfony1

126
推荐指数
6
解决办法
5万
查看次数

单向和双向JPA和Hibernate关联有什么区别?

单向和双向关联有什么区别?

由于在db中生成的表都是相同的,因此我发现的唯一区别是双向关联的每一侧都将引用另一侧,而单向不引用.

这是一个单向关联

public class User {
    private int     id;
    private String  name;
    @ManyToOne
    @JoinColumn(
            name = "groupId")
    private Group   group;
}

public class Group {
    private int     id;
    private String  name;
}
Run Code Online (Sandbox Code Playgroud)

双向关联

public class User {
    private int     id;
    private String  name;
    @ManyToOne
    @JoinColumn(
            name = "groupId")
    private Group   group;
}
public class Group {
    private int         id;
    private String      name;
    @OneToMany(mappedBy="group")
    private List<User>  users;
}
Run Code Online (Sandbox Code Playgroud)

区别在于该组是否拥有用户的参考.

所以我想知道这是唯一的区别吗?哪个推荐?

java orm hibernate jpa associations

122
推荐指数
4
解决办法
10万
查看次数

允许Django中的空值的唯一字段

我有模型Foo有字段栏.bar字段应该是唯一的,但允许空值,这意味着如果bar字段是null,我想允许多个记录,但如果不是,null则值必须是唯一的.

这是我的模型:

class Foo(models.Model):
    name = models.CharField(max_length=40)
    bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None)
Run Code Online (Sandbox Code Playgroud)

这是表的相应SQL:

CREATE TABLE appl_foo
(
    id serial NOT NULL,
     "name" character varying(40) NOT NULL,
    bar character varying(40),
    CONSTRAINT appl_foo_pkey PRIMARY KEY (id),
    CONSTRAINT appl_foo_bar_key UNIQUE (bar)
)   
Run Code Online (Sandbox Code Playgroud)

当使用管理界面创建多个bar为空的foo对象时,它会给出一个错误:"Foo with this Bar已经存在."

但是当我插入数据库(PostgreSQL)时:

insert into appl_foo ("name", bar) values ('test1', null)
insert into appl_foo ("name", bar) values ('test2', null)
Run Code Online (Sandbox Code Playgroud)

这很好用,它允许我插入超过1条记录,条形为空,所以数据库允许我做我想要的,这只是Django模型的错误.有任何想法吗?

编辑

就DB而言,解决方案的可移植性不是问题,我们对Postgres感到满意.我已经尝试设置一个可调用的唯一,这是我的函数返回True/False为特定的bar值,它没有给出任何错误,但是如果它没有任何影响那么缝合.

到目前为止,我已经从bar属性中删除了唯一的说明符并处理了应用程序中的bar唯一性,但仍然在寻找更优雅的解决方案.有什么建议?

django orm django-models

121
推荐指数
7
解决办法
4万
查看次数

NHibernate vs LINQ to SQL

作为一个没有在现实世界项目中使用这两种技术的人,我想知道是否有人知道这两者如何相互补充以及它们的功能重叠多少?

linq nhibernate orm linq-to-sql

117
推荐指数
5
解决办法
3万
查看次数

ORM映射中的"拥有方"是什么?

拥有方到底意味着什么?一些映射示例(一对多,一对一,多对一)的解释是什么?

以下文本摘自Java EE 6文档中对@OneToOne的描述.你可以看到这个概念拥有方在里面.

定义与具有一对一多重性的另一个实体的单值关联.通常不必明确指定关联的目标实体,因为它通常可以从被引用的对象的类型推断出来.如果关系是双向的,则非拥有方必须使用OneToOne批注的mappedBy元素来指定拥有方的关系字段或属性.

java mapping orm hibernate jpa

117
推荐指数
3
解决办法
3万
查看次数