2015-06-01 4 views
10

मैं हाइबरनेट के साथ एक प्राथमिक कुंजी के रूप में एक UUID उपयोग करने के लिए, और PostgreSQL जाने या सीतनिद्रा में होना स्वचालित रूप से उन आईडी जेनरेट कोशिश कर रहा हूँ के रूप में इकाई UUID। आदर्श रूप से, मैं java.util.UUID ऑब्जेक्ट भी लेना चाहता हूं कि मैं भी साथ काम कर सकता हूं।हाइबरनेट/जेपीए 2/PostgreSQL - एक प्राथमिक कुंजी

ऐसा करने के लिए, मैं Postgres में UUID डेटा प्रकार को java.util.UUID मैप करने के लिए कोशिश कर रहा हूँ। मैं डेटाबेस को सही ढंग से उत्पन्न करने के लिए हाइबरनेट प्राप्त कर सकता हूं, और डेटा को इकाई की तालिका में डाल सकता हूं। हालांकि, डेटा वसंत के माध्यम से वापस पुन: प्राप्त करने, मैं इस मिल:

Provided id of the wrong type for class com.example.somepackage.Brand. Expected: class java.util.UUID, got class java.lang.String; nested exception is java.lang.IllegalArgumentException: Provided id of the wrong type for class com.example.somepackage.Brand. Expected: class java.util.UUID, got class java.lang.String 

क्षमा याचना अगर यह आसानी से ठीक है, मैं वसंत/हाइबरनेट के लिए बहुत नया हूँ। कुछ मदद की सराहना की जाएगी।

@Entity 
public class Brand { 

    @javax.persistence.Id 
    @GenericGenerator(name = "uuid-gen", strategy = "uuid2") 
    @GeneratedValue(generator = "uuid-gen") 
    @org.hibernate.annotations.Type(type="pg-uuid") 
    private UUID id; 
    private String brand; 

    public UUID getId() { 
     return id; 
    } 

    public void setId(UUID id) { 
     this.id = id; 
    } 

    public String getBrand() { 
     return brand; 
    } 

    public void setBrand(String brand) { 
     this.brand = brand; 
    } 
} 

Maven pom.xml के रूप में इस प्रकार है

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>spring-rest-entity-test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>spring-rest-entity-test</name> 
    <description>Test</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.3.RELEASE</version> 
     <relativePath/> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <start-class>com.example.somepackage.Main</start-class> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-rest</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-rest-core</artifactId> 
      <version>2.3.0.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-commons</artifactId> 
      <version>1.10.0.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-rest-webmvc</artifactId> 
      <version>2.3.0.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.0.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.1-901-1.jdbc4</version> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

उत्तर

8

इसे अपने आप को हल है। पता चला है मैं java.util.UUID और नहीं String उपयोग करने के लिए भंडार वर्ग अद्यतन करने के लिए भूल गया था।

@RepositoryRestResource(collectionResourceRel = "brand", path = "brand") 
public interface BrandRepo extends PagingAndSortingRepository<Brand, UUID> { // Was previously <Brand, String> 
    List<Brand> findByBrand(@Param("brand") String brand); 
} 
संबंधित मुद्दे