我有关于的问题
在主键上使用one-to-one
关联或在主键上使用one-to-one
关联有什么好处?
我已在http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/associations.html#assoc-unidirectional-121
阅读了Hibernate的文档有人可以告诉我使用第一次或第二次实施的详细信息吗?
另一个问题,我在User和Perimeter之间有一个one-to-one
单向关系
(用户---->周界)我想使用基于外键的关联
我可以将方向反转到(用户< ----周界),以便表格用户保持原样吗?
我认为这不合理(perimeter.getUser()!!!)但技术上可行吗?
答案 0 :(得分:3)
我看到两个好处
对于你的第二个问题,是的,当然有可能。这称为双向OneToOne关联:
public class User {
// ...
@OneToOne
@JoinColumn
private Perimeter perimeter;
}
public class Perimeter {
// ...
@OneToOne(mappedBy = "perimeter")
private User user;
}
答案 1 :(得分:3)
除了JB Nizet提到的优点之外,感谢另一个人告诉我,基于外键的一对一更灵活。让我们考虑一下我在外键上使用一对一(User< --- Perimeter),如果应用程序的要求改变为需要多个用户进行任何周边,如果我共享主键,我会有要做更多的重构。但是当我使用外键时,我所做的就是放松唯一约束;)
答案 2 :(得分:1)
使用主键关联的一对一关系
在这种关联中,当一个实体与另一个实体中的一个实体相关时,会发生一对一的关系。
这里是链接,例如: primary key association
使用外键关联的一对一关系
在同一示例中,请执行以下更改:
在StockDetail.java
private Integer stockDetailsId;
//with setter and getter
//remove stockId and it's setter and getter
in stock.hbm.xml
<id name="stockId" type="java.lang.Integer">
<column name="STOCK_ID" />
<generator class="assigned" />
</id>
<id name="stockDetailsId" type="java.lang.Integer">
<column name="STOCK_DETAILS_ID" />
<generator class="assigned"/>
</id>
<many-to-one name="stock"
class="com.test.common.Stock" column="STOCK_ID" />
在hibernate.cfg.xml
中 //this is optional property if you want to create database table's according to your hbm file's.
<property name="hibernate.hbm2ddl.auto">create</property>