2014-04-05 28 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實現的解釋。