2016-04-07 16 views
0

I developping bin eine Webapp (Frühjahr J2EE/AngularJS)Frühling Daten: Problem mit OneToOne Beziehung

ich eine Beziehung zwischen zwei Entitäten festlegen möchten:
Bürger (id, Vorname, Stadt)
Stadt (id , cityName)

Ein Bürger lebt in nur einer Stadt.

Ich muss eine Stadt von einem Bürger finden. Ich brauche keinen Bürger aus einer Stadt zu finden.

Ich habe getan, dass:

@Entity 
@Table(name = "citizen") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class Citizen implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Column(name = "last_name") 
    private String lastName; 

    @OneToOne 
    private City city; 
} 



@Entity 
@Table(name = "city") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class City implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Column(name = "city_name") 
    private String cityName; 
} 

In Datenbank I Daten eingefügt haben. Citizen 1, 2 und 3 verbunden sind, zum Ort 1 und Citizen 4 ist mit City 2

verknüpft

Wenn ich versuche, alle Bürger zu laden, erhalte ich die Fehlermeldung: Mehr als eine Zeile mit dem angegebenen Identifikator gefunden wurde: 1, für Klasse: com.myApp.rh.domain.Citizen

Was ist falsch in meinen Entitäten?

Dank

+0

Da man 'City' viele haben' Citizen', bitte ändern Sie ihn auf 'ManyToOne' statt' OneToOne' auf der 'Privat-Stadt,' und versuchen. Kannst du auch deine Logik zeigen, um alle Bürger, die du benutzt, zu laden? –

Antwort

0

Es scheint, dass Sie die @JoinColumn Anmerkung in Ihrer Citizen Einheit fehlen.

@Entity 
@Table(name = "citizen") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class Citizen implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Column(name = "last_name") 
    private String lastName; 

    @OneToOne 
    @JoinColumn(name = "id", unique = true) 
    private City city; 
} 



@Entity 
@Table(name = "city") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class City implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Column(name = "city_name") 
    private String cityName; 
} 
Verwandte Themen