Αδράνεια Χαρτογράφηση Εξαίρεση δεν θα μπορούσε να καθορίσει τον τύπο για: java.nio.file.Path

ψήφοι
0

Έχω μια οντότητα Φωτογραφία όπως παρακάτω

@Entity
class Photo {

Path imagePath;

public Path getImagePath(){
return imagePath;
// setter
}

Σε αυτή την οντότητα έχω να nio.Path πώς μπορώ να λύσει Αυτό ευθυγραμμίζεται πρόβλημα ή να κάνετε το τραπέζι σε db να δεχτεί χορδές ως διαδρομή η στοίβα σφάλμα είναι κάτω

Caused by: org.hibernate.MappingException: Could not determine type for: java.nio.file.Path, at table: photo, for columns: [org.hibernate.mapping.Column(image_path)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:431)
Δημοσιεύθηκε 07/11/2018 στις 23:40
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
2

Θα μπορούσατε να χρησιμοποιήσετε ένα AttributeConverter.

import java.nio.file.Path;
import java.nio.file.Paths;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter // may want to set autoApply to true
public class PathConverter implements AttributeConverter<Path, String> {

    @Override
    public String convertToDatabaseColumn(Path attribute) {
        return attribute == null ? null : attribute.toString();
    }

    @Override
    public Path convertToEntityAttribute(String dbData) {
        return dbData == null ? null : Paths.get(dbData);
    }

}

Αυτό το παράδειγμα μετατροπέας αποθηκεύει μόνο το τμήμα πορεία του Path. Δεν θα διατηρήσει οποιαδήποτε άλλη πληροφορία, όπως αυτό FileSystemανήκει (και θα αναλάβει την προεπιλογή FileSystemκατά τη μετατροπή από το Stringνα Path).

import java.nio.file.Path;
import javax.persistence.Convert;
import javax.persistence.Entity;

@Entity
public class Photo {

    @Convert(converter = PathConverter.class) // needed if autoApply isn't true
    private Path imagePath;

}

Ανατρέξτε στην τεκμηρίωση του παρακάτω για περισσότερες πληροφορίες:

Απαντήθηκε 08/11/2018 στις 03:02
πηγή χρήστη

ψήφοι
0

Η διαδρομή δεν είναι μια οντότητα, οπότε αν θέλετε το db να το αποθηκεύσετε ως String, θα πρέπει να αλλάξετε τον τύπο σε String και χρησιμοποιήστε την ακόλουθη Paths.get (διαδρομή String) για να επιστρέψει το μονοπάτι

@Entity
class Photo {

     String imagePathStr;

public String getImagePathStr(){
     return imagePath;
// setter
}

@Transient
public Path getImagePath(){
     return Paths.get(imagePathStr);
}
Απαντήθηκε 08/11/2018 στις 00:53
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more