与JoinTable的单向OneToMany关系 - 未生成表

时间:2013-05-07 14:18:03

标签: java hibernate playframework-2.1

我尝试在Play Framework 2.1中使用JoinTable创建单向OneToMany关系。但是,框架没有生成'JoinTable':“transformation_input_files”。奇怪的是,如果我将关系更改为ManyToMany,则会生成表。这是代码:

所以它是关于包含多个S3Files的Transformation类。这是转换文件:

@Entity
@Table(name = "transformations")
public class Transformation extends Model {

    @Id
    public Long id;

    /*...*/

    @OneToMany(cascade = CascadeType.PERSIST)
    @JoinTable(
        name="transformation_input_files",
        joinColumns = @JoinColumn( name="transformation_id"),
        inverseJoinColumns = @JoinColumn( name="input_file_id")
    )
    public List<S3File> inputFiles;
}

这是S3File:

@Entity
@Table(name="s3files")
public class S3File extends Model {

    @Id
    public Long id;

    /*...*/
}

S3Files用于更多模型,因此不能是双向关系。如果我在@ManyToMany中更改了@OneToMany,它确实生成了连接表,但是,我喜欢坚持@OneToMany关系。

我该如何解决这个问题?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

在一对多关系中,您必须将关系存储在“Many”实体中。如果您不想将值存储在S3File类中,则必须创建另一个类来连接这两个类。< / p>

Example:
@Entity
@Table(name="transformations_ s3files")
public class Relation extends Model {
    @Id
    public Long id;

    @ManyToOne
    public Transformation transformation;        

    @OneToOne
    public S3File file;
}