Also habe ich angefangen mit Morphia zu arbeiten und ich stoße auf ein seltsames Problem.Morphia (MongoDB) Datenspeicher "get" gibt null zurück
Hier ist meine Entitätsklasse
@Entity("movies")
@Indexes(@Index(value = "Name", fields = @Field("Name")))
@Converters(LocalDateConverter.class)
public class MovieDetails implements Serializable
{
@Id
public String Id;
public String Name;
public String Description;
public String ImageName;
public LocalDate ReleaseDate;
public String Director;
public int Duration;
public String Genres;
public String Actors;
public MovieDetails()
{
}
public MovieDetails(String id, String name, String description, String imageName, String director, String actors, LocalDate releaseDate, String genres, int duration)
{
this (name, description, imageName, director, actors, releaseDate, genres, duration);
Id = id;
}
public MovieDetails(String name, String description, String imageName, String director, String actors, LocalDate releaseDate, String genres, int duration)
{
Name = name;
Description = description;
ImageName = imageName;
Director = director;
Actors = actors;
ReleaseDate = releaseDate;
Genres = genres;
Duration = duration;
}
}
Hier ist mein kleiner Test:
final Morphia morphia = new Morphia();
// tell Morphia where to find your classes
// can be called multiple times with different packages or classes
morphia.mapPackage("nimrodpasha.cinema.objects");
// create the Datastore connecting to the default port on the local host
final Datastore datastore =
morphia.createDatastore(SingleMongoClient.getInstance().getClient(),
Constants.DB.TICKET_DATABASE);
datastore.ensureIndexes();
//region new movie
MovieDetails movie = new MovieDetails("The Mask", "Stanley Ipkiss (Jim Carrey) is a bank clerk that is an incredibly nice man. Unfortunately," +
" he is too nice for his own good and is a pushover when it comes to confrontations. After one of the worst days of his life, he finds a mask that depicts Loki, " +
"the Norse night god of mischief. Now, when he puts it on, he becomes his inner, self: a cartoon romantic wild man. However, a small time crime boss, Dorian Tyrel (Peter Greene), " +
"comes across this character dubbed The Mask by the media. After Ipkiss's alter ego indirectly kills his friend in crime," +
" Tyrel now wants this green-faced goon destroyed.",
"MASK.jpg", "Chuck Russell", "Jim Carrey as Stanley Ipkiss/The Mask,Cameron Diaz as Tina Carlyle,Amy Yasbeck as Peggy Brandt,Joely Fisher as Maggie", new LocalDate(1994, 2, 1), "Action,Comedy,CrimeAction,Family,Fantasy", 88);
//endregion
// Clearing the db first
datastore.delete(datastore.createQuery(MovieDetails.class));
// Saving a new entity and getting the result saved id
String id = (String) datastore.save(movie).getId();
// This returns as null
MovieDetails movieRetrieved = datastore.get(MovieDetails.class, id);
// This returns with one item
List<MovieDetails> allMovies = datastore.createQuery(MovieDetails.class).asList();
Wenn ich
datastore.get (MovieDetails.class, id)
ich null
Wenn ich:
datastore.createQuery (MovieDetails.class) .asList();
Ich sehe meinen Film in der DB, mit der ID in der Get-Funktion verwendet.
Erprobt die ID in vielen Variationen ... toString(), ObjectId (id), Key (Der Wert aus dem gespeicherten Ergebnis zurückgegeben).
Die Id in der DB (mit Mongo Explorer betrachtet) als etwas nicht zeigen, die nicht String (blau gefärbt), verdächtig: Mongo Explorer item picture
Irgendwelche Ideen?
Edit: * die Id ist in der Tat eine Zeichenfolge, die Gussarbeiten und es wurde unter Verwendung der Uhr überprüft + Instanceof Edit 2: * Irgendwie die Besetzung von ObjectId zu String übergeben und die Id ist nicht wirklich ein Zeichenfolge.
prüfen, was dieser zurückkehrt und statt es zu bespannen Gießen, ein Objekt dieser Art machen. datastore.save (Film) .getId() Es sieht aus wie es Null für eine ClassCastException in Java zurückgibt.Gibt es Protokollierung, die Sie betrachten oder debuggen können Sie aktivieren? –
@CalvinTaylor Beim Hinzufügen der ID zum Beobachten (ohne Casting) lautet das Ergebnis: "598b70468a141e56ac9e9203" und der innere Wert ist als char [] markiert. ID instanceof String gibt auch "True" zurück. – Nimig
@CalvinTaylor in Bezug auf Ihre Bearbeitung: getId() gibt keine Null zurück und/oder erhalten Sie eine ClassCastException, Die zurückgegebene ID stimmt mit der in der Datenbank überein. Ich habe die Code-Schritte getrennt, bevor sie wieder gruppiert wurden, erst nachdem die ID korrekt zurückgegeben wurde, wurde db korrekt aktualisiert und die ID ist eine Zeichenfolge. – Nimig