现在我知道关于一对一关系有一些答案,但他们都没有回答我的问题,所以请在表决之前阅读这个:) 我试图在MySQL数据库中实现一对一的关系。 例如让我说我有用户表和帐户表。 而且我想确定有用户只能有一个帐户。 而且每个用户只能有一个帐户。 我发现了两个解决scheme,但不知道该用什么,还有其他的select。 第一个scheme DROP DATABASE IF EXISTS test; CREATE DATABASE test CHARSET = utf8 COLLATE = utf8_general_ci; USE test; CREATE TABLE users( id INT NOT NULL AUTO_INCREMENT, user_name VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8; CREATE TABLE accounts( id INT NOT NULL AUTO_INCREMENT, account_name VARCHAR(45) […]
我正在使用一个我不想改变的现有模式。 该模式在表Person和VitalStats之间具有一对一的关系,其中Person具有主键,并且VitalStats使用相同的字段作为其主键和对于Person的外键,这意味着其值是相应的PK的值人。 这些logging是由外部进程创build的,我的JPA代码永远不需要更新VitalStats。 对于我的对象模型,我希望我的Person类包含一个VitalStats成员,但是: 当我尝试 @Entity public class Person{ private long id; @Id public long getId(){ return id; } private VitalStats vs; @OneToOne(mappedBy = “person”) public VitalStats getVs() { return vs; } } @Entity public class VitalStats{ private Person person; @OneToOne public Person getPerson() { return person; } } 我有这个问题,VitalStats缺less一个@ Id,这不适用于@实体。 如果我尝试 @Id @OneToOne public […]
我正在把一个satchmo应用程序的pipe理员放在一起。 Satchmo使用OneToOne关系来扩展基本Product模型,并且我想在一页上进行编辑。 一个OneToOne关系可以作为一个Inline吗? 如果不是,最好的方法是添加几个字段到我的pipe理员的一个给定的页面,最终将被保存到OneToOne关系? 例如: class Product(models.Model): name = models.CharField(max_length=100) … class MyProduct(models.Model): product = models.OneToOne(Product) … 我试过这个我的pipe理员,但它不工作,似乎期望一个外键: class ProductInline(admin.StackedInline): model = Product fields = ('name',) class MyProductAdmin(admin.ModelAdmin): inlines = (AlbumProductInline,) admin.site.register(MyProduct, MyProductAdmin) 哪个抛出这个错误: <class 'satchmo.product.models.Product'> has no ForeignKey to <class 'my_app.models.MyProduct'> 自定义表单是唯一的方法吗? 编辑:只是试过下面的代码直接添加字段…也不起作用: class AlbumAdmin(admin.ModelAdmin): fields = ('product__name',)
我有两个这样的模型: class Type1Profile(models.Model): user = models.OneToOneField(User, unique=True) … class Type2Profile(models.Model): user = models.OneToOneField(User, unique=True) … 如果用户有Type1或Type2configuration文件,我需要做一些事情: if request.user.type1profile != None: # do something elif request.user.type2profile != None: # do something else else: # do something else 但是,对于没有type1或type2configuration文件的用户,执行这样的代码会产生以下错误: Type1Profile matching query does not exist. 我如何检查用户的个人资料types? 谢谢
如何使用entity framework4代码优先(POCO)声明一对一的关系? 我发现这个问题(entity framework4中的一对一关系) ,但是这个答案引用的文章没有用(有一行代码是1-1关系,但没有提及如何定义它)。
我前几天想到了正常化,而且我想到了一个数据库中应该有1:1关系的时候。 名称:SSN? 我会让他们在同一个表PersonID:AddressID? 再次,同一张桌子。 我可以拿出一个1:多个或多个:许多(与适当的中间表),但从来没有1:1。 我错过了什么明显的?
我遇到了一对一延迟加载在hibernate中无法正常工作的问题。 我已经解决了 ,但仍然没有正确理解会发生什么。 我的代码( 懒加载不工作在这里 ,当我拉人 – 地址也被提取): @Entity public class Person{ @Id @SequenceGenerator(name = "person_sequence", sequenceName = "sq_person") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_sequence") @Column(name = "id") private long personID; @OneToOne(mappedBy="person", cascade=CascadeType.ALL, fetch = FetchType.LAZY) private Adress address; //.. getters, setters } @Entity public class Address { @Id @Column(name="id", unique=true, nullable=false) @GeneratedValue(generator="gen") @GenericGenerator(name="gen", strategy="foreign", […]