2012-04-15 20 views
2

Ich habe einige Klassen, die verwandt sind. Einer davon ist der Objektsatz einer anderen Klasse. So,ElementCollection Verwenden mit PlayFrameWork

@Entity 
public class Serving extends Model{ 

@Required 
public Item item; 
@Required 
public Float amount; 
@Required 
public Date time; 

public Serving(Item item, Float amount) { 
    super(); 
    this.item = item; 
    this.amount = amount; 
    this.time = new Date(); 
} 
} 

@Entity 
public class Receipt extends Model{ 

@Required 
@ElementCollection 
@NotNull 
public Set<Serving> servings; 
@Required 
DiningTable dtable; 

public Receipt(Set<Serving> servings, DiningTable dtable) { 
    super(); 
    this.servings = servings; 
    this.dtable = dtable; 
} 

//order'ın totalın hesaplamak lazım. 

} 

und ich habe auch einige Yaml Daten, um dies zu initialisieren.

Serving(ser1): item : it1 amount : 1 time : 2012-04-05 12:10

Serving(ser2): item : it2 amount : 0.5 time : 2012-04-05 12:11

Serving(ser3): item : it3 amount : 2 time : 2012-04-04 13:10

Serving(ser4): item : it4 amount : 1 time : 2012-04-04 13:10

Serving(ser5): item : it5 amount : 0.5 time : 2012-04-04 14:00

Serving(ser6): item : it6 amount : 1 time : 2012-04-04 14:10

Serving(ser7): item : it7 amount : 1 time : 2012-04-03 16:00

Serving(ser8): item : it8 amount : 2 time : 2012-04-03 16:01

Serving(ser9): item : it9 amount : 1 time : 2012-04-03 16:30

Serving(ser10): item : it2 amount : 1 time : 2012-04-02 17:00

Receipt(rec1): dtable : tab1 servings :
- ser1 - ser2 - ser3

Receipt(rec2): dtable : tab2 servings : - ser4 - ser5

Receipt(rec3): dtable : tab3 servings : - ser6

Receipt(rec4): dtable : tab4 servings : - ser7 - ser8

Receipt(5): dtable : tab4 servings : - ser9 - ser10

Als ich versuchte, diese Daten zu initialisieren es diesen Fehler gibt,

14:13:01,200 WARN ~ SQL Error: 1364, SQLState: HY000 14:13:01,200 ERROR ~ Field 'servings_time' doesn't have a default value 14:13:01,200 ERROR ~ Could not synchronize database state with session org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

Wie kann ich dieses Problem lösen?

@Temporal(TemporalType.TIME) 
    public Date date; 

or 

    @Temporal(TemporalType.DATETIME) 
    public Date date; 
+0

das Komma in dem 'ser2' ist ein Copy-Paste-Fehler Serving? – Codemwnci

+0

Sie haben Recht, es ist meine Schuld. der richtige ist Komma oder Punkt? –

+0

Punkt ist das richtige Format. – Codemwnci

Antwort

0

Im dient Klassenkonstruktors Datum als Parameter erhalten müssen:

0

Sie sollten Ihre Zeit mit Anmerkungen versehen.

public Serving(Item item, Float amount, Date date) { 
super(); 
this.item = item; 
this.amount = amount; 
this.time = date; 
} 

So habe ich auch diesen Konstruktor hinzuzufügen ...

+0

nichts geändert. –

+0

Bitte lesen Sie Ihre Frage zu schnell. Haben Sie Codemwncis Vorschlag ausprobiert? – emt14

+0

ja ich versuchte, aber wieder nicht funktioniert ... –