In my JPA model I typically annotate each persistent class with @Entity and each persistent property with an appropriate annotation e.g. @Id, @Column, @ManyToOne, etc. A typical example is
@Entity
@Table(name = "files")
public class StoredFile {
@Id
@Type(type = "uuid-char")
private UUID id;
@Column(name = "file_name")
private String fileName;
// getters and setters omitted
}
I was looking at this example entity class and noticed that only the id field has a JPA annotation, i.e. there are no annotations specified for name or price.
Under what circumstances will a property of an @Entity be persisted if there are no annotations on the field/getter/setter?
CodePudding user response:
You don't need to specify @Column annotation to persist a bean property.
@Column has to be used to specify a name of a table column. So if a naming strategy is used, you don't need to use @Column.
My advice is to always use @Column even if you don't need to specify a name.
@Column
private String fileName;
Also never mix fields and getters annotations.
Everything is primary for Hibernate.
