相关疑难解决方法(0)

Hibernate Annotations - 哪个更好,字段或属性访问?

这个问题与Hibernate Annotation Placement Question有些相关.

但我想知道哪个更好?通过属性访问或通过字段访问?各有哪些优缺点?

java orm annotations hibernate jpa

129
推荐指数
12
解决办法
11万
查看次数

JPA中@Access annoation的用途是什么意思在实体级别?

我在实体中看到了这个@ javax.persistence.Access(javax.persistence.AccessType.FIELD).这是什么意思?是否真的需要为实体声明@Access.

java jpa java-ee

5
推荐指数
1
解决办法
3343
查看次数

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'字段列表'中的未知列'CONTACTID'

我使用EclipseLink从MySQL生成我的所有对象,我有一个名为的字段CONTACT_ID.当我想要的时候em.persist(contact),我得到一个错误的消息说" Unknown column 'CONTACTID'".
我搜索了我的项目和数据库,我没有任何列名称CONTACTID.不知何故,JPA删除了此列名称中的"_".我确信这是非常愚蠢的事情,我无法找出原因.

这是我的数据库设计: 在此输入图像描述

User.java:

@EmbeddedId
private UserPK id;

private int score;

//bi-directional many-to-one association to CmnContact
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn (name="CONTACT_ID")
private CmnContact cmnContact;

//bi-directional many-to-one association to Login
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn (name="LOGIN_ID")
private Login login;
Run Code Online (Sandbox Code Playgroud)

CmnContact.java:

@Id
@JoinColumn(name="CONTACT_ID")
private String contactId;
//bi-directional many-to-one association to User
@OneToMany(mappedBy="cmnContact")
private List<User> users;
Run Code Online (Sandbox Code Playgroud)

UserPK.java:

@Column(name="USER_ID")
private UUID userId;

@Column(name="CONTACT_ID", insertable=false, updatable=false)
private UUID contactId;

@Column(name="LOGIN_ID", insertable=false, updatable=false)
private UUID …
Run Code Online (Sandbox Code Playgroud)

mysql spring jpa eclipselink

5
推荐指数
1
解决办法
2万
查看次数

如何强制hibernate调用setter方法来填充类字段?

我有一个持久化类,其中有一个瞬态字段表示此类的API版本(我为api请求使用的字段的子集).这个字段@Transient就像我简单地使用其他字段来创建它一样.

问题是hibernate使用默认的空构造函数来实例化类和反射以访问字段...所以我不能在constrorctor上实例化我的瞬态类,也不能调用setter方法

我试图激活getter方法而不是字段强制hibernate使用setter,但它不起作用

我试图@Access(AccessType.PROPERTY)在字段上使用,但它没有用

如何强制hibernate调用setter方法来填充类字段?

@Entity
public class User {

    @Transient
    private ApiUser tempUser = new ApiUser ();

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Access(AccessType.PROPERTY)
    @Column(nullable = false)
    private String name;
    @Access(AccessType.PROPERTY)
    @Column(nullable = false, unique = true)
    private String username;
@Access(AccessType.PROPERTY)
    @Column(nullable = false)
    private String userId;

//lots of others fields//
public void setUsername(String username) {
        this.username = username;
        this.tempUser.setUsername(username);
    }
public void setUserId(String userId) {
        this.userId = userId;
        this.tempUser.setId(Long.parseLong(userId)); …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

3
推荐指数
1
解决办法
2137
查看次数

标签 统计

jpa ×4

java ×3

hibernate ×2

annotations ×1

eclipselink ×1

java-ee ×1

mysql ×1

orm ×1

spring ×1