相关疑难解决方法(0)

使hibernate忽略未映射的类变量

我认为hibernate只考虑带注释的类变量@Column.但奇怪的是,今天当我添加一个变量(没有映射到任何列,只是我在类中需要的变量)时,它试图将该变量作为列名包含在select语句中并抛出错误 -

'字段列表'中的未知列'team1_.agencyName'

我的课 -

@Entity
@Table(name="team")
public class Team extends BaseObject implements Serializable {

@Id  @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(length=50)
private String name;

@Column(length=10)
private String code;

@Column(name = "agency_id")
private Long agencyId;

private String agencyName; //note: not annotated.

}
Run Code Online (Sandbox Code Playgroud)

仅供参考...我在另一个具有多对多映射的类中使用上面的类

@ManyToMany(fetch = FetchType.EAGER) 
@JoinTable(
        name="user_team",
        joinColumns = { @JoinColumn( name="user_id") },
        inverseJoinColumns = @JoinColumn( name="team_id")
)    
public Set<Team> getTeams() {
    return teams;
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?!

java hibernate jpa

188
推荐指数
3
解决办法
15万
查看次数

@Transient注释,@ org.springframework.data.annotation.Transient注释,临时关键字和密码存储

目前我正在学习Spring框架,主要关注它的安全模块.我已经看过一些与注册和登录相关的指南.我在User类的密码字段中看到了transient关键字或@Transient注释的常见用法.

我的虚拟应用程序使用Spring Boot + Spring MVC + Spring Security + MySQL.

我知道

Java的transient关键字用于表示字段不是序列化的.

JPA的@Transient注释 ......

...指定属性或字段不是持久的.它用于注释实体类,映射的超类或可嵌入类的属性或字段.

和org.springframework.data.annotation的@Transient批注...

将字段标记为映射框架的瞬态字段.因此,该属性将不会被持久化,也不会被映射框架进一步检查.

在我的MySQL数据库中,我有spring_demo模式,它有3个表:

+-----------------------+
| Tables_in_spring_demo |
+-----------------------+
| role                  |
| user                  |
| user_role             |
+-----------------------+
Run Code Online (Sandbox Code Playgroud)

当我在User类的密码字段中使用transient关键字时,它不会存储在MySQL数据库中.(例如:test01)

mysql> select * from user;
+----+--------+------------------+----------+
| id | active | email            | username |
+----+--------+------------------+----------+
|  1 |      1 | test01@gmail.com | test01   |
+----+--------+------------------+----------+ …
Run Code Online (Sandbox Code Playgroud)

jpa spring-security transient spring-annotations spring-data

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

在注释Entity类中映射时是否可以忽略某些字段

我正在使用Hibernate与MySQL进行映射

我有一个实体类,我在其中使用MySQL中的列映射方法

现在的问题是,如果可能,我不要在类与SQL任何列映射的一些方法,好像我尽量不映射我的实体类的方法之一,它提供了异常.

这是代码片段

@Column(name="skills")
public String getSkills() {
    return skills;
}

public int getRowCount() {
    return rowCount;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我已经在SQL中为getSkills分配了列技能,但我不想getRowCount() 在MySQL中分配任何列.

我怎么能实现这一点(如上所述,它给出例外,rowCount是未知的)?

java annotations jpa

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

导致:org.hibernate.MappingException:无法确定类型:com.fasterxml.jackson.databind.JsonNode

我正在尝试使用 javax.persistence.* 通过使用 @Entity 自动创建表。这是一些问题。无论如何,是否可以使用注释将 JsonNode 转换为字符串。

在此输入图像描述

编辑:Jpa是Spring-Data-Jpa,JsonNode是fasterxml.jackson

mapping json jpa

6
推荐指数
1
解决办法
4873
查看次数

JPA实体静态记录器

我的问题是,我可以在JPA实体中使用静态记录器,还是会导致一些问题?我想做这样的事情(记录器是log4j):

    @Entity
public class AlertRule implements Serializable {
/**
 * Serial version ID.
 */
private static final long serialVersionUID = 9000392523924653431L;

/**Logger. */
transient private static final Logger LOGGER = Logger.getLogger(AlertRule.class);

/**
 * ID.
 */
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;

/**
 * Rule name.
 */
@NotNull
private String name;

...
Run Code Online (Sandbox Code Playgroud)

logging static log4j jpa java-ee

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