質問

I am trying to create a @OneToMany relationship and though I read couple of answers here I am still getting PSQLException.

I am trying to create Track that has many Media objects. So I followed this answer.

The problem: When trying to save A Track that contains several Medias i am getting:

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

What I am missing?

Media:

@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;

Tracks:

@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;

Update - 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>
役に立ちましたか?

解決

I ended up doing the @OneToMany as implemented JPA 1.0 standard. Which is not Unidirectional but makes more sense to me :).

I found this site to be reliable and has both JPA 1.0 and JPA 2.0 implementations explained.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top