2017-07-10 4 views
3

動作しませんSettlementエンティティProductエンティティにProductエンティティ@Transientは、私が持っている

@Entity 
public class Product { 
    @Transient 
    private String enabled; 

に関連ProductSubscriptionエンティティ

@Entity 
@Table(name = "subscriptionproduct") 
public class ProductSubscription { 
    @ManyToOne 
    @JoinColumn(name = "product_id") 
    private Product product; 

に関連

@Entity 
@Table(name = "settlement") 
public class Settlement { 

    @ManyToOne 
    @JoinColumn(name = "subscription_x_product_id") 
    private ProductSubscription productSubscription; 

私はフィールドがあるenabled@org.springframework.data.annotation.Transientと注釈されています。私はそれが私がDBからロードされることからenabledフィールドを無視することができますどのように例外をCaused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'enabled'.

を与えるSettlementRepository.findAll();呼び出すとき も私はリポジトリ

public interface SettlementRepository extends JpaRepository<Settlement, Integer> 

がありますか?

+0

'enabled'の設定者にアノテーションがありますか? – Jens

+0

@Jensいいえ、セッターやゲッターに注釈がありません。 –

答えて

6

解答が見つかりました。@javax.persistence.Transientに変更すると、問題は注釈@org.springframework.data.annotation.Transientにありました。問題なく正常に機能しました。

+0

同じ問題がありましたが、最初から '@ javax.persistence.Transient'の' @ Transient'を使用していましたが、まだ成功していませんでした。エンティティを保存し、返されたオブジェクトにgetメソッドを呼び出し、値が保持されました。他に何かを見つけましたか?ありがとう。 – fabioresner

+1

注釈は実際には動作していますが、 '@ Transactional'テストで使用しているので、SpringリポジトリはObjectを更新していないようです(保存されているオブジェクトとリポジトリから返されたオブジェクトは同じオブジェクトID )。だからフィールドはデータベースに書き込まれていませんでしたが、私がfindOneを呼び出してそれを新しい変数に代入しても、リポジトリはそれを返しています。まだそれを修正する方法を知らない。 – fabioresner

+0

@fabioresnerあなたのenittyで何かエラーが発生しました(私にとっては間違った\ @UniqueConstraint名でした)。 <![CDATA [select * from tableName where id =:myId]]>