2014-04-05 26 views
0

我想创建一个@OneToMany关系,虽然我在这里阅读了几个答案,但我仍然得到PSQLException。如何配置@OneToMany - 获取PSQLException

我正在尝试创建具有多个Media对象的Track。所以我跟着this回答。

问题: 当试图保存包含几个一TrackMedias我得到:

PSQLException: ERROR: insert or update on table medias violates foreign key constraint 
    Detail: Key (normmediatitle)=(SOME_MEDIA_TITLE) is not present in table tracks. 

什么我失踪?

媒体:

@Entity(name = "medias") 
public class Media { 
    static Logger logger = LoggerFactory.getLogger(Media.class); 

    @Id 
    @NotNull 
    @Column(name="normmediatitle") 
    private String title; 

    @GeneratedValue(strategy = GenerationType.AUTO, generator = "media_seq_gen") 
    @SequenceGenerator(name = "media_seq_gen", sequenceName = "mediaSeq") 
    private long id; 


    @NotNull 
    @Column(unique = true) 
    private String videoId; 

曲目:

@Entity(name = "tracks") 
public class Track { 
    static Logger logger = LoggerFactory.getLogger(Track.class); 

    @Id 
    @NotNull 
    @Column(name="normtracktitle") 
    private String title; 

    @NotNull 
    @OneToMany(cascade = CascadeType.ALL) 
    @JoinColumn(name="normmediatitle", referencedColumnName="normtracktitle") 
    private List<Media> medias; 

更新 - pom.xml中:

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-jpa</artifactId> 
    <version>1.5.1.RELEASE</version> 
</dependency> 

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.1.Final</version> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.3.4.Final</version> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.1.0.Final</version> 
</dependency> 

回答

0

我最后做的@OneTo很多实现了JPA 1.0标准。这不是单向的,但对我来说更有意义:)。

我发现this网站是可靠的,并具有JPA 1.0和JPA 2.0实现的解释。