2016-04-13 8 views
0

Я пытаюсь добавить свойство Transient в свой класс Embeddable. Вот что у меня есть: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; 

Однако, это бросает следующее исключение: Caused by: org.hibernate.MappingException: Could not determine type for: *.*.*.Product, at table: Package_packageProducts, for columns: [org.hibernate.mapping.Column(packageProducts.product)]

Исключения больше не выдается, если я аннотирование моего класса PackageProduct с этим:

@Access(AccessType.FIELD) 

Я пытаюсь понять, почему это работает с аннотацией уровня @ @. Любая помощь приветствуется. Благодарю.

ответ

0

В спящем режиме вы можете применить все аннотации к полям или методам, одновременно использовать смешанное использование не разрешено. Чтобы переопределить этот @Access, необходимо. В вашем классе продуктов, если вы используете такой случай, исправьте это.

+0

Спасибо Amit за вход. Найдено, что у меня это на продукте: '@AccessType (" property ") private String id;' Однако, что я не получаю, это PackageProduct работает, если я удаляю '@ Transient', Требуется модификатор уровня класса. –

Смежные вопросы