JPA - 创建或使用外键

时间:2015-10-11 17:53:29

标签: java hibernate jpa

好的,我有2个实体 - :

  • 教师

一名教师可以属于一个部门,一个部门可以有多名教师。

因此要求教师实体包含映射关系的mappedBy属性。

现在我面临的问题是,如果某个部门不存在,那么它就会被创建,如果不是,则查询将获取该部门,并在教师对象中使用该部门。

现在的问题是,如果部门存在,我必须使用merge(),否则我必须使用persist(),因为部门将被新插入。有什么我可以做的,允许动态使用合并或持久吗?

代码如下 - :

Department.java

def login(request):
    login_form = LoginForm(request or None)
    if login_form.is_valid():
        login(request, login_form.u) # directly pass the user by accessing from login_form object

    return render(request, 'home.html', {})

Teacher.java

@Entity
@Table (name = "DEPARTMENTS")
@NamedQueries({
    @NamedQuery(name = "Department.findById",
            query = "SELECT d FROM "
                    + "Department d "
                    + "WHERE d.deptId = :id")
})
public class Department extends STSEntity{

    private static final long serialVersionUID = 1L;

    @Column (name = "DEPT_ID", length = 10, 
            unique = true, nullable = false)
    private String deptId;

    @OneToMany (targetEntity = Teacher.class, 
            mappedBy = "dept")
    private Collection<Teacher> teachers = new ArrayList<>();

无论如何我可以同时使用两者?任何帮助将不胜感激

基本上,如果外键存在,则使用它或以其他方式创建它。

0 个答案:

没有答案