标签: one-to-one

Nhibernate与子对象插入错误的一对一映射问题

因为以下Nhibernate问题,我整天都在用桌子敲打桌子.

每个银行帐户都有一组(且只有一组)与之关联的费率.银行帐户表的主键BankAccountID也是外键和AccountRate表中的主键.

public class BankAccount
{
    public virtual int BankAccountId { get; set; }
    public virtual string AccountName { get; set;}
    public virtual AccountRate AccountRate {get;set;}
}

public class AccountRate
{
    public virtual int BankAccountId { get; set; }
    public virtual decimal Rate1 { get; set; }
    public virtual decimal Rate2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我为BankAccount提供了以下HBM映射:

<class name="BankAccount" table="BankAccount">
<id name ="BankAccountId" column="BankAccountId">
  <generator class="foreign">
    <param name="property">
      AccountRate
    </param>
  </generator>
</id>
<property name ="AccountName" column="AccountName" />
<one-to-one name="AccountRate" class="AccountRate" …
Run Code Online (Sandbox Code Playgroud)

nhibernate hbm one-to-one

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

NHibernate 3.2中的一对一映射通过代码映射

我正在努力学习NHibernate 3.2 built-in mapping by code api(不流利的NHibernate).你能帮助我映射这些实体之间的一对一(或零)关系吗?

注意:我搜索了问题,我搜索SOF,所有示例都使用Fluent API或xml; 我正在尝试在NHibernate 3.2中使用内置的映射api

public class Person { 
    public virtual int Id { get; set; }  
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 

    // can be null 
    public virtual Address Address { get; set; }
} 

public class Address { 
    public virtual int Id { get; set; } 
    public virtual string Line1 { get; set; } 
    public …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate one-to-one c#-4.0 nhibernate-mapping-by-code

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

JPA unidirectional @OneToOne vs @ManyToOne与Hibernate - 没什么区别?

根据书籍Pro JPA 2,单向@ManyToOne和@OneToOne之间的主要区别在于@OneToOne:

源实体中只有一个实例可以引用同一个目标实体实例.换句话说,目标实体实例不在源实体实例之间共享.在数据库中,这相当于对源外键列(即源实体表中的外键列)具有唯一性约束.

问题是,当我在实体上创建这样的映射并让Hibernate创建模式时,根本没有创建唯一约束.为什么?因为对我而言,如果必须为映射显式定义唯一约束,则@ManyToOne和@OneToOne之间没有区别.我可以为他们两个做这件事,但没有任何区别.这是正确的行为吗?

hibernate jpa one-to-one many-to-one

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

Entity Framework Core 一对一自引用关系失败

在构建迁移时,我收到以下错误:

无法确定由“Location”类型的导航属性“Location.NorthLocation”表示的关系。手动配置关系,或从模型中忽略此属性。

位置实体:

public class Location
{
    public Guid Id { get; set; }

    public DateTime CreatedWhen { get; set; }
    public string CreatedBy { get; set; }
    public DateTime ModifiedWhen { get; set; }
    public string ModifiedBy { get; set; }

    public Guid? NorthLocationId { get; set; }
    public virtual Location NorthLocation { get; set; }

    public Guid? SouthLocationId { get; set; }
    public virtual Location SouthLocation { get; set; }

    public Guid? EastLocationId { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

entity-relationship entity-framework one-to-one self-referencing-table entity-framework-core

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

一对一与多对一(单向)

一个雇主有几个雇员,因此雇员与他们的雇主有(多对一)关系。假设我们忽略了从雇主到雇员的反向关系(一对多),那么从雇员的角度来看,这可以表示为一对一的关系!?

hibernate jpa one-to-one many-to-one

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

JPA一对一映射提供了sax解析异常

我在尝试映射JPA中的一对一关系时得到org.xml.sax.SAXParseException

一切都很好,直到我改变

<transient name="testCase"/>

至:

<attributes>
..
    <one-to-one name="testCase">
        <join-column name="test_case_id"/>
    </one-to-one>
..
</attributes>
Run Code Online (Sandbox Code Playgroud)

给出错误:

引起:org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:找到以元素"一对一"开头的无效内容.其中一个'{"http://java.sun.com/xml/ns/persistence/orm":many-to-many,,http://java.sun.com/xml/ns/persistence/orm":嵌入式,"http://java.sun.com/xml/ns/persistence/orm":transient}"是预期的.

我不明白异常消息的含义.为什么会出现这种情况?

orm jpa one-to-one

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

Hibernate:对一对一关系的查询太多

精简版

Hibernate正在执行多个选择查询而不是仅两个以检索一对一关系

长版

人员类:

@Entity
@Table(name = "people")
public class Person{

  @Id
  @GeneratedValue
  @Column
  private Integer id;

  @Column
  private String name;

  @OneToOne(optional=false, fetch=FetchType.EAGER)
  private Job job;
}
Run Code Online (Sandbox Code Playgroud)

职位类别:

@Entity
@Table(name = "jobs")
public class Job{

  @Id
  @GeneratedValue
  @Column
  private Integer id;

  @Column
  private String name;
}
Run Code Online (Sandbox Code Playgroud)

显示所有人及其工作:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Person> people = session.createQuery("from Person").list();
for(Person p : people){
    System.out.println(p.getName() + " | " + p.getJob().getName());
}
Run Code Online (Sandbox Code Playgroud)

我的期望:两个选择,一个为五个人,一个为三个不同的工作(三个人有相同的工作)

我得到了:四个选择,一个用于人,三个用于他们各自的工作

Hibernate: select person0_.id as id1_, person0_.job_id as job3_1_, person0_.name …
Run Code Online (Sandbox Code Playgroud)

java sql hibernate one-to-one

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

Django One to One - 不想删除相关模型

所以这就是问题所在.我有2个型号:

裁判级别和裁判

这两个是:

class RefereeLevel(models.Model):
    level = models.PositiveSmallIntegerField(blank=False,default=1,verbose_name=_("level"),unique=True)
    salary = models.DecimalField(blank=False,default=0.00,decimal_places=2,max_digits=4,verbose_name=_("salary"))

    def __unicode__(self):  # Python 2.7: def __unicode__(self):
        return self.level
Run Code Online (Sandbox Code Playgroud)

第二节课:

 class Referee(models.Model):
    member = models.OneToOneField(Member,related_name='member',blank=False)
    information = models.ForeignKey(RefereeLevel,related_name='information',blank=False,null=True,default=1)
Run Code Online (Sandbox Code Playgroud)

现在发生的是,如果我删除了RefereeLevel,那么该级别的裁判将被删除.但我不希望这样,我希望将裁判的信息设置为无.

那可能吗?

谢谢,阿拉

django one-to-one relationships

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

一对一的关系,只在Laravel单向走

是否有可能/权利在表之间建立只有一种方式的关系?我有一个invoices表,我需要在其他表中引用喜欢commission_payments,membership_paymentsinvoices表不需要a commission_payment_id或a membership_payment_id.换句话说,可能发生不同类型的交易,并且它们都可能附有发票,但发票不需要引用这些交易表.

invoices           commission_payments      membership_payments
---------------    ---------------------    ---------------------
-id                -id                      -id
...                -invoice_id              -invoice_id
                   ...                      ...
Run Code Online (Sandbox Code Playgroud)

我为每个表创建了Eloquent模型.我在其他两个模型上添加了一个hasOne关系invoices.

class CommissionPayment extends Model{
    public function invoice(){
        return $this->hasOne('App\Models\Invoice');
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试访问Comission Payment的附加发票,如下所示:

$com = CommissionPayment::first();
$com->invoice->id;
Run Code Online (Sandbox Code Playgroud)

然后我得到这个错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 
'invoices.commission_payment_id' in 'where clause' (SQL: select * from `invoices` 
where `invoices`.`commission_payment_id` = 15 and `invoices`.`commission_payment_id` is not
null limit 1) 
Run Code Online (Sandbox Code Playgroud)

为什么要 …

entity-relationship database-relations one-to-one has-one laravel

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

一对一关系

我有两个模型,视频和帧。

Frame.belongsTo(models.Video);
Video.hasMany(models.Frame, { as: "Frames" });
Run Code Online (Sandbox Code Playgroud)

现在,我需要一种方法来指定视频的第一帧和最后一帧,但无法正常工作。

我尝试了这个:

Video.hasOne(Frame, { as: "FirstFrame" });
Video.hasOne(Frame, { as: "LastFrame" });
Run Code Online (Sandbox Code Playgroud)

但这会在“帧”表而不是“视频”表中创建FirstFrameId和LastFrameId。我需要具有video.get / setFirstFrame()和video.get / setLastFrame()函数。我怎样才能做到这一点?

orm associations one-to-one node.js sequelize.js

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