2016-04-13 13 views
0

EmbeddableクラスにTransientプロパティを追加しようとしています。ここで私が持っているものです。Hibernate @Transient MappingException

@NoArgsConstructor 
@AllArgsConstructor 
@Data 
@Builder 
@Embeddable 
public class PackageProduct 
{ 
    @Field 
    private String productId; 

    @Transient 
    private Product product; 
} 

そしてPackageProductは、このようPackage.javaで使用されています。

@ElementCollection(targetClass=PackageProduct.class, fetch = FetchType.EAGER) 
private Set<PackageProduct> packageProducts; 

しかし、これは、次の例外がスローされます。 私はこれで私のPackageProductクラスに注釈を付ける場合は、例外がもはやスローされCaused by: org.hibernate.MappingException: Could not determine type for: *.*.*.Product, at table: Package_packageProducts, for columns: [org.hibernate.mapping.Column(packageProducts.product)]

:私はそれ理由を理解しようとしています

@Access(AccessType.FIELD) 

クラスレベルの@Accessアノテーションで動作します。どんな助けもありがとうございます。ありがとう。

答えて

0

休止状態では、フィールドまたはメソッドにすべての注釈を適用することができますが、同時に混合使用は許可されません。これをオーバーライドするには、@Accessが必要です。

+0

入力いただきありがとうございます。 '@AccessType(" property ")私的な文字列id;' しかし、私は '@ Transient'を削除するとPackageProductが動作しますが、クラスレベル修飾子が必要です。 –