JPA新手在这里。这是我的问题:
假设我们有这样的实体:
@Entity
@Table(name="thingies")
public class Thingy implements Serializable {
private Long thingyId;
private String thingyName;
private Integer thingyPrice;
// Constructor, getters, setters
}
映射到这样的表:
create table thingies (
thingy_id serial primary key,
thingy_name text,
thingy_price smallint
);
有没有办法让提供程序知道属性命名策略,而不是需要在每个getter上显式提供@Column注释?换句话说,我们可以自动将所有下划线名称映射到相应的camelcased名称而不使用@Column吗?
(我知道我可以引用姓名,这不是我上面问题的答案。)
答案 0 :(得分:1)
您需要将以下属性添加到persistence.xml文件中:
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
所有camelcasedproperty名称将被映射到强调列名称。
答案 1 :(得分:0)
你应该使用@Column。
@Column(name="thingy_name")
private String thingyName;
Becouse'thingy_name'不等于'thingyName'。 JPA不知道你想要映射什么。但是在表中,thingyname和实体thingyName对于JPA是相同的。
使用注释@Column,不需要花费很多时间。但是你会得到一份明确的文件。