Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @OneToMany mappedBy映射到______Java_Jpa_Annotations_One To Many_Jpql - Fatal编程技术网

Java @OneToMany mappedBy映射到_____

Java @OneToMany mappedBy映射到_____,java,jpa,annotations,one-to-many,jpql,Java,Jpa,Annotations,One To Many,Jpql,mappedBy将映射到的是什么?或者,更确切地说,它应该映射到什么 根据@OneToMany,下面的标题字段映射到@EntityFoo?然后Foo将是javax.mail.Header的包装器 package net.bounceme.dur.usenet.model; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.logging.Level;

mappedBy
映射到的是什么?或者,更确切地说,它应该映射到什么

根据
@OneToMany
,下面的
标题
字段映射到
@Entity
Foo
?然后
Foo
将是
javax.mail.Header
的包装器

package net.bounceme.dur.usenet.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Header;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.persistence.*;

@Entity
public class Articles implements Serializable {

    private static final long serialVersionUID = 1L;
    private static final Logger LOG = Logger.getLogger(Articles.class.getName());
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String subject;

    @OneToMany(mappedBy="foo")  //a wrapper for Header is needed?
    private List<Header> headers = new ArrayList<>();

    public Articles() {
    }

    public Articles(Message message) {
        try {
            subject = message.getSubject();
        } catch (MessagingException ex) {
            Logger.getLogger(Articles.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Articles)) {
            return false;
        }
        Articles other = (Articles) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return subject;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }
}
package net.bounceme.dur.usenet.model;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.mail.Header;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.persistence.*;
@实体
公共类项目实现可序列化{
私有静态最终长serialVersionUID=1L;
私有静态最终记录器LOG=Logger.getLogger(Articles.class.getName());
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@纵队
私有字符串主题;
@OneToMany(mappedBy=“foo”)//是否需要标头的包装器?
私有列表头=新的ArrayList();
公共物品(){
}
公共物品(讯息){
试一试{
subject=message.getSubject();
}捕获(消息例外){
Logger.getLogger(Articles.class.getName()).log(Level.SEVERE,null,ex);
}
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@凌驾
公共int hashCode(){
int hash=0;
hash+=(id!=null?id.hashCode():0);
返回散列;
}
@凌驾
公共布尔等于(对象){
//TODO:警告-如果未设置id字段,此方法将不起作用
if(!(物品的对象实例)){
返回false;
}
Articles other=(Articles)对象;
如果((this.id==null&&other.id!=null)| |(this.id!=null&&!this.id.equals(other.id))){
返回false;
}
返回true;
}
@凌驾
公共字符串toString(){
返回主题;
}
公共字符串getSubject(){
返回主题;
}
public void setSubject(字符串主题){
this.subject=主语;
}
}

检查此处:

有关部分是:

这有点不言自明。你想要一些例子吗


例如,如果您的
文章
有许多
标题
对象,那么
文章
拥有联盟关系,因为文章有许多标题。

是的,需要javax.mail.Header的包装器,一般来说,您不能直接持久化任意类,尤其是不可序列化的类。此外,它们不能是设计实体之间关系的列表元素

mappedBy的值是双向关系的拥有方字段的名称。作为示例,让我们假设Article实体与Foo实体确实存在一对多关系:

@OneToMany(mappedBy="article")
private List<Foo> headers;
当双向关系持久化到数据库时,将使用拥有方(在本例中为Foo中的文章)。在JPA 2.0规范中,这是通过以下文字来说明的:

托管实体之间的双向关系将被持久化 基于关系拥有方持有的引用。它是 开发人员有责任保留内存中的引用 在拥有方和持有在相反方与 当他们改变的时候,他们会互相帮助。在单向一对一的情况下 以及一对多关系,开发人员有责任 确保关系的语义得到遵守


哪一类的字段?说阅读文档不是一个好答案!尤其是当它是可怕的API文档时。我不熟悉实体框架的东西,但这里的关键点似乎是要注意,mapped by引用了另一个类上的一个字段(通常是私有的),我甚至不太记得这个问题。我通常不会对答案投反对票,不管它值多少钱(它必须是一个糟糕的答案,而不是上面的情况),但我注意到doc链接是指向javaee5而不是6。我认为语法“owning relationship”有帮助,即
Article
就是owning relationship。就个人而言,我并不介意RTFM链接,只要它不是“手册”,而是指向某一页或某一部分。稍有了解,让我试试:)好吧,但我得到了
异常描述:[class net.bounceme.dur.usenet.model.Articles]在关系属性[field headers]中使用非实体[class javax.mail.Header]作为目标实体.
所以我需要重新思考这个问题。而且,很多人都会想到它,但我不希望数据库中有每个可能的头——但这是今后的事情。我想这就回答了这个问题。谢谢:)
@OneToMany(mappedBy="article")
private List<Foo> headers;
@Entity
public class Foo {
...
   @ManyToOne
    Article article;
}