2016-04-03 4 views
0

トリガを使用して、Oracleデータベース内のテーブルのidカラムを自動的にインクリメントします。ここでOracle DatabaseからSpring MVCを介して自動インクリメントされたID(プライマリ・キー)を取得する

は私の春のコントローラ、返されたものを見るためにするSystem.out.printlnを使用すると、私はIDがリストされ見ることができませんどのように

@RequestMapping("/ssuForm/create") 
@ResponseStatus(HttpStatus.OK) 
@ResponseBody 
public UmkeiBusinessInfo createSsuForm(@RequestBody UmkeiBusinessInfo umkeiSsu) { 

    UmkeiBusinessInfo createSsuForm = umkeiBusinessInfoService.create(umkeiSsu); 
    System.out.println(createSsuForm); 
    return createSsuForm; 
} 

内のコードです。他のすべてはしました。ここで

ログ、それはネクサス、ないIDで始まり

|Nexus|Wed Apr 13 00:00:00 SGT 2016|Nexus Street|NexusCity|04|null|80000|0108808550|[email protected]|1|A|2|P1|B10A218|Sun Apr 03 10:40:28 SGT 2016|null||B10A218|1|0145283459|[email protected]|9|A08|00751A|null|null|null|null|null 

注意してください。内部コード/ビジネス/サービス/ IMPLここ

@Override 
public UmkeiBusinessInfo save(UmkeiBusinessInfo umkeiBusinessInfo) { 
    return update(umkeiBusinessInfo) ; 
} 

@Override 
public UmkeiBusinessInfo create(UmkeiBusinessInfo umkeiBusinessInfo) { 
    UmkeiBusinessInfoEntity umkeiBusinessInfoEntity = umkeiBusinessInfoJpaRepository.findOne(umkeiBusinessInfo.getUbiId()); 
    if(umkeiBusinessInfoEntity != null) { 
     throw new IllegalStateException("already.exists"); 
    } 
    umkeiBusinessInfoEntity = new UmkeiBusinessInfoEntity(); 
    umkeiBusinessInfoServiceMapper.mapUmkeiBusinessInfoToUmkeiBusinessInfoEntity(umkeiBusinessInfo, umkeiBusinessInfoEntity); 
    UmkeiBusinessInfoEntity umkeiBusinessInfoEntitySaved = umkeiBusinessInfoJpaRepository.save(umkeiBusinessInfoEntity); 
    return umkeiBusinessInfoServiceMapper.mapUmkeiBusinessInfoEntityToUmkeiBusinessInfo(umkeiBusinessInfoEntitySaved); 
} 

@Override 
public UmkeiBusinessInfo update(UmkeiBusinessInfo umkeiBusinessInfo) { 
    UmkeiBusinessInfoEntity umkeiBusinessInfoEntity = umkeiBusinessInfoJpaRepository.findOne(umkeiBusinessInfo.getUbiId()); 
    umkeiBusinessInfoServiceMapper.mapUmkeiBusinessInfoToUmkeiBusinessInfoEntity(umkeiBusinessInfo, umkeiBusinessInfoEntity); 
    UmkeiBusinessInfoEntity umkeiBusinessInfoEntitySaved = umkeiBusinessInfoJpaRepository.save(umkeiBusinessInfoEntity); 
    return umkeiBusinessInfoServiceMapper.mapUmkeiBusinessInfoEntityToUmkeiBusinessInfo(umkeiBusinessInfoEntitySaved); 
} 

とは実体である

これはされています。以下は

は が enter image description here

EDITは、私のテーブルがどのように見えるかの抜粋です部分、

//---------------------------------------------------------------------- 
// ENTITY PRIMARY KEY (BASED ON A SINGLE FIELD) 
//---------------------------------------------------------------------- 
@NotNull 
@Size(min = 1, max = 20) 
private String ubiId; 

//---------------------------------------------------------------------- 
// ENTITY DATA FIELDS 
//----------------------------------------------------------------------  
@Size(max = 100) 
private String ubiName; 


private Date ubiStartDate; 

@Size(max = 100) 
private String ubiAddress; 

@Size(max = 64) 
private String ubiCity; 

@Size(max = 10) 
private String ubiState; 

@Size(max = 10) 
private String ubiCountry; 

ここではJPAエンティティ部分、

//---------------------------------------------------------------------- 
// ENTITY PRIMARY KEY (BASED ON A SINGLE FIELD) 
//---------------------------------------------------------------------- 
@Id 
@Column(name="UBI_ID", nullable=false, length=20) 
private String  ubiId  ; 


//---------------------------------------------------------------------- 
// ENTITY DATA FIELDS 
//----------------------------------------------------------------------  
@Column(name="UBI_NAME", length=100) 
private String  ubiName  ; 

@Temporal(TemporalType.TIMESTAMP) 
@Column(name="UBI_START_DATE") 
private Date  ubiStartDate ; 

@Column(name="UBI_ADDRESS", length=100) 
private String  ubiAddress ; 
+1

IDを増やしてネイティブシーケンサーを使用しないトリガーを使用する理由は何ですか? – pczeus

+0

申し訳ありませんが、私はトリガーを有効にし、自動的にシーケンスをアクティブにします。私はトリガーを有効にした後に何もしなかった。 – Luqman

+1

JPA – Bunti

答えて

0

私はちょうどそれを働かせました。

まず、データ型をORACLEで「Number」に変更し、すべてのコードをStringからBigDecimalに変更する必要があります。 Buntiが述べたように

はその後、

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="UMKEI_BUSINESS_INFO_SEQ1") 
@SequenceGenerator(name="UMKEI_BUSINESS_INFO_SEQ1 ", sequenceName="UMKEI_BUSINESS_INFO_SEQ1", allocationSize=1) 

を注釈を追加し、私は私のインクリメンタル値はクライアントに渡されました。

以前は、dataTypeのために機能しませんでした。

関連する問題