标签: many-to-one

AR模型中的关系功能,多对一关系

所以这是场景:

我有两个表,问题和项目.

一个项目可以有很多问题,一个问题可以只有一个项目.

由于问题是多对一的,你必须定义它吗?

因为我知道项目模型我有:

public function relations()
{
    return array(
    'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
    'users' => array(self::MANY_MANY, 'User', 'tbl_project_user_assignment(project_id, user_id)'),
    );
}
Run Code Online (Sandbox Code Playgroud)

对于问题模型我只有外键:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'requester' => array(self::BELONGS_TO, 'User', 'requester_id'),
        'owner' => array(self::BELONGS_TO, 'User', 'owner_id'),
        'project' => array(self::BELONGS_TO, 'Project', 'project_id'),
    );
}
Run Code Online (Sandbox Code Playgroud)

我猜任何一个关系都不需要定义?

先感谢您.

顺便说一句,我正在做敏捷的Yii书,最后我问自己这个问题.AR类中有一个选项(http://www.yiiframework.com/doc/guide/database.arr).

但由于某种原因,这种情况是否可选?

activerecord many-to-one yii

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

选择内部联接多对一关系,限制子表的结果数

我有以下表格:

create table TableA (
    Id int primary key identity,
    Name varchar(80) not null
)

create table TableB (
    Id int primary key identity,
    TableA_Id int not null foreign key references TableA(Id),
    Value varchar(80) not null
)
Run Code Online (Sandbox Code Playgroud)

我想写一个类似的查询

select TableA.Name, TableB.Value
    from TableA
    inner join TableB on TableA.Id = TableB.TableA_Id
    where TableA.Name like 'a%'
    order by TableB.Value asc
Run Code Online (Sandbox Code Playgroud)

除了我只想要每个TableA_Id中的前10名TableB.Value(按TableB.Value升序排序).

而不是每个TableB.Value都返回TableA.Name,我只想要每个的前10个值TableA.Name.

这样的查询会是什么?

sql one-to-many many-to-one sql-server-2008 sql-server-2008-r2

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

不存在具有给定标识符的行

嗨,我正在使用@ManyToOne 注释进行实体映射。

下面是我的实体,它们之间有 manytoone 关联

学生.java

@Entity
@Table(name = "student")
public class student{

    @Id
    @Column(name = "UserID")
    private String userid;

    @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinColumns({
       @JoinColumn(name = "userrole1", referencedColumnName = "VALUE"),
       @JoinColumn(name = "userrole2", referencedColumnName = "DESCRIPTION")

    })
    private studentdetails1 userrole1;

    @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinColumns({
       @JoinColumn(name = "userrole1", referencedColumnName = "VALUE",insertable=false, updatable=false),
       @JoinColumn(name = "userrole2", referencedColumnName = "DESCRIPTION", insertable=false, updatable=false)

    })
    private studentdetails2 userrole2;

//setters and getters 
//constructor

}
Run Code Online (Sandbox Code Playgroud)

studentdetails1.java

@Data
@Entity
@Table(name = "student_details1")
public class …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa hibernate-mapping many-to-one

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

如何实现多对一的数据结构?

我希望反向绘制地图,这意味着我有很多键,只有一个值.我需要这个结构,所以当我搜索其中一个键时,我得到了值.

在此输入图像描述

我可以使用简单的哈希映射,但由于多次存储值,它会浪费空间.我正在寻找java中的优化和高效实现.我很感激你的建议.

java map many-to-one data-structures

1
推荐指数
1
解决办法
1296
查看次数

ASP.NET MVC 5 - 多对一关系的脚手架

我正在使用VS 2013开发ASP.NET MVC 5,EF 6,Razor Engine,VB语言和数据库第一种方法.

现在,在我的数据库中; 我有两个表格如下:

CREATE TABLE [dbo].[Group]
(
    [Id]    INT          NOT NULL PRIMARY KEY IDENTITY(1, 1), 
    [Name]  VARCHAR(50)  NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE [dbo].[Subscriber]
(
    [Id]          INT              NOT NULL  PRIMARY KEY IDENTITY(1, 1),
    [FirstName]   [nvarchar](100)  NOT NULL,
    [MiddleName]  [nvarchar](100)  NULL,
    [LastName]    [nvarchar](100)  NOT NULL, 
    [Email]       [varchar] (200)  NOT NULL  UNIQUE, 
    [GroupId]     INT              NULL      REFERENCES [Group] ON DELETE SET NULL
)
Run Code Online (Sandbox Code Playgroud)

现在,当我使用脚手架自动生成控制器和视图时; 我Group在"创建订阅者"和"编辑订阅者"视图中得到一个<select>控件(所有项目都在<option>里面).

但实际上,我希望"创建组"和"编辑组"视图向我询问我Subscribers想要添加到特定组中.对于相同的HTML控制可以是复选框的列表<选择多个="多个">与所有Subscriber的项目,如<选项>秒. …

asp.net-mvc entity-framework one-to-many many-to-one asp.net-mvc-scaffolding

1
推荐指数
1
解决办法
5520
查看次数

JPA.@ManyToOne相关字段上的@Column(updatable = false)

在我的可审计实体中,我有一个字段creationUser,我不想在db merge操作中更新.

这是我的实体代码:

@Column(updatable=false) 
@ManyToOne(cascade = CascadeType.MERGE)
public User creationUser;
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

Unexpected exception
PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to build EntityManagerFactory
Caused by: org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property: models.AreaOfMedicine.creationUser
Run Code Online (Sandbox Code Playgroud)

那么如何防止更新该字段呢?请帮忙

annotations hibernate jpa many-to-one

1
推荐指数
1
解决办法
2402
查看次数

@ManyToOne 引用的 getId() 上的 LazyInitializationException

LazyInitializationException当我尝试访问分离实体的惰性 @ManyToOne 引用的 ID 时,我正面临着这种情况。我不想完全获取引用,而只需要 ID(它应该存在于原始对象中,以便以惰性/延迟方式获取引用)。

EntityA ea = dao.find(1) // find is @Transactional, but transaction is closed after method exits
ea.getLazyReference().getId() // here is get exception. lazyReference is a ManyToOne relation and so the foreight key is stored in EntityA side.
Run Code Online (Sandbox Code Playgroud)

换句话说,如何在不实际获取整个 LazyReference 的情况下访问 LazyReference 的 ID(实际上存在于 EntityA 的初始选择中)?

java hibernate lazy-loading many-to-one lazy-initialization

1
推荐指数
1
解决办法
1319
查看次数

在Django中建模产品订单

我有一定数量的产品清单,我需要在Django中对其建模。

每个订单都具有以下属性:

id
email
total_price
line_items
Run Code Online (Sandbox Code Playgroud)

line_items是产品和所需产品实例数的字典。

产品是描述一类产品的单独模型。

我需要在产品和订单之间建立多对多关系,因为每个产品可能是许多订单的一部分,但是每个订单可能有很多产品-如果我的订单中有3个实例,这在我的字段中看起来如何?一个产品,另外2个,等等...?

django foreign-keys django-models many-to-one

1
推荐指数
1
解决办法
844
查看次数

引起原因:java.sql.SQLSyntaxErrorException:第 1 行“order (id)”附近使用的正确语法的 [...] 版本

此异常与以下内容有关

spring.jpa.hibernate.ddl-auto=update
Run Code Online (Sandbox Code Playgroud)

我还没有尝试保存任何数据

在我看来,映射是正确的,但仍然抛出异常:

org.hibernate.tool.schema.spi.CommandAcceptanceException:通过 JDBC 语句执行 DDL“create table order(id bigint not null auto_increment,order_date date,user_id bigint,primary key(id))engine=MyISAM”时出错

引起原因:java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“order (id)”附近使用的正确语法

我的映射如下所示:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@MappedSuperclass
public abstract class BaseEntity {

    @Id
    @GeneratedValue(
            strategy = GenerationType.IDENTITY
    )
    private Long id;
}


@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Order")
@Table(name = "order")
public class Order extends BaseEntity {

    private LocalDate orderDate;

    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
    private List<OrderedTicket> orderedTickets = new ArrayList<>();

    private Long userId; …
Run Code Online (Sandbox Code Playgroud)

mysql hibernate many-to-one spring-data-jpa spring-boot

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

Symfony2:将表单添加到另一个表单中

很简单:

我有一个实体机构

/**
 * @var \Rewards\LocationBundle\Entity\Address
 *
 * @ORM\ManyToOne(targetEntity="\Acme\xxBundle\Entity\Address", cascade={"persist"})
 * @ORM\JoinColumn(name="address_id", referencedColumnName="id")
 */
protected $address;
Run Code Online (Sandbox Code Playgroud)

我有一个创建表单的AgencyType:

   $builder
        ->add('name')
        ->add('address');
Run Code Online (Sandbox Code Playgroud)

我也有AddressType

   $builder
        ->add('street')
        ->add('zipCode')
        ->add('city')
        ->add('country');
Run Code Online (Sandbox Code Playgroud)

有了这个配置,如果我把:

{{ form_widget(form) }} 
Run Code Online (Sandbox Code Playgroud)

在twig模板中我只查看'Select'表单小部件,但我想查看AgencyType AddressType形式的所有字段.

我怎么能这样做?

php many-to-one symfony

0
推荐指数
1
解决办法
2912
查看次数

未知 comodel_name '产品.产品'

快要疯了:

我只是想在我的自定义模块中添加一个 Many2one 字段。(模块从头开始,不继承其他人或扩展其他人)。

light_system = fields.Many2one('product.product', string='Lighting System', ondelete='restrict')

当我重新启动服务器时我得到:

WARNING newtest openerp.fields: Field jobsite.location.light_system with unknown comodel_name 'product.product'

当我尝试从表单中的该字段中选择某些内容时,如果失败并显示:

ProgrammingError: relation "_unknown" does not exist LINE 1: SELECT "_unknown".id FROM "_unknown" ORDER BY "_unknown"."id...

如果我使用product.template,也会发生同样的情况。如果我将“product.product”更改为“res.partner”,它就可以正常工作(对于联系人)...

我在这里缺少什么?我进行了搜索和谷歌搜索,缺乏类似的问题让我觉得我错过了一些非常简单的东西,我应该为产品使用什么模型?

many-to-one odoo-9

0
推荐指数
1
解决办法
3811
查看次数

Java Spring Repository 删除不起作用 一对多关系

我有删除到多对一关系的多方面的问题。我已经从关系中删除了所有CascadeTypes,但问题仍然存在。该条目不会被删除(只执行选择,不执行删除查询)。我正在尝试通过 CRUD 存储库调用删除它来删除它。它调用该方法并成功执行但没有任何反应。

关系如下:一个活动有一个分配的课程,一个课程可以有许多分配给它的活动。一个 Activity 有一个特定的 ActivityType。

课程如下。

活动

public class Activity implements Item, Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    ...

    @ManyToOne
    @JoinColumn(name = "type_id", nullable = false)
    private ActivityType type;

    @ManyToOne
    @JoinColumn(name = "course_id", nullable = false)
    @JsonSerialize(using = CustomCourseSerializer.class)
    private Course course;

    ...
}
Run Code Online (Sandbox Code Playgroud)

课程

public class Course implements Item, Serializable {

...

@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class) //cascade = { CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH, …
Run Code Online (Sandbox Code Playgroud)

java database spring many-to-one sql-delete

0
推荐指数
1
解决办法
6256
查看次数

FetchType.LAZY 不适用于休眠中的 @ManyToOne 映射

简单地说,我在 Child 类和 Parent 类上有一个多对一的关系。我想加载所有孩子而不必加载他们的父母详细信息。我的孩子班级是

@Entity

public class Child implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentId", referencedColumnName = "id")
private Parent parent;

public Child() {
}
// Getters and setters here
}
Run Code Online (Sandbox Code Playgroud)

我的父类是

@Entity
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;

public Parent() {
}
}
Run Code Online (Sandbox Code Playgroud)

我有一个休息控制器,我想用它来获取所有没有父母的孩子

@GetMapping
public List<Child> getChildren() {
    return childRepository.findAll();
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时它会抛出

 {
  "timestamp": "2019-02-22T13:45:31.219+0000", …
Run Code Online (Sandbox Code Playgroud)

java persistence hibernate lazy-loading many-to-one

0
推荐指数
1
解决办法
3373
查看次数