标签: hibernate-mapping

Hibernate支持Postgresql UUID?

我不能让Hibernate使用java.util.UUID for PostgreSQL.

这是使用javax.persistence的映射.*annotations:

private UUID itemUuid;

@Column(name="item_uuid",columnDefinition="uuid NOT NULL")
public UUID getItemUuid() {
    return itemUuid;
}

public void setItemUuid(UUID itemUuid) {
    this.itemUuid = itemUuid;
}
Run Code Online (Sandbox Code Playgroud)

当持久化对象时,我得到一个SQLGrammarException:

column "item_uuid" is of type uuid but expression is of type bytea at character 149
Run Code Online (Sandbox Code Playgroud)

PostgreSQL版本是8.4.4
JDBC驱动程序--8.4.4-702(也试过9.0 - 同样的事情)
Hibernate版本是3.6,主要配置属性:

<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://192.168.1.1/db_test</property>
Run Code Online (Sandbox Code Playgroud)

java postgresql orm hibernate hibernate-mapping

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

org.hibernate.MappingException:无法找到具有逻辑名称的列

我的表格如下:

1- medical_company:

  • account_entanyaccount_entity_id列上的medical_company_id 外键(不是pk)
  • COLUMN1
  • COLUMN2
  • 栏3

2- account_entity:

  • account_entity_id(pk)
  • COLUMN1
  • COLUMN2
  • 栏3

3 人:

  • person_id(pk)
  • COLUMN1
  • COLUMN2
  • 栏3

4- employee_company:

  • 在COMPANY_ID外键medical_company上表medical_company_id
  • EMPLOYEE_ID外键的人上表为person_id
  • COLUMN1
  • COLUMN2

实体:

1- 医疗公司:

@SuppressWarnings("serial")
@Entity
@Table(name = "medical_company")
public class MedicalCompany implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
@Basic(fetch = FetchType.EAGER)
private Long id;

@OneToOne
@Cascade(value = { CascadeType.ALL })
@JoinColumn(name …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa hibernate-mapping hbm2ddl java-ee

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

Hibernate和JPA之间的@Entity有什么区别

当我在做Hibernate独立程序示例时,在我的脑海中使用@Entity注释创建了一点混乱.

这里我的问题是,我有一个来自javax.persistence包的@Entity的持久化类,然后它工作正常但是当我用Hibernate API替换@Entity注释(即来自org.hibernate.annotations包)然后它给出了org.hibernate.MappingException :未知实体:com.jetti.test.Employee

给予更多解释,非常感谢.

java orm hibernate jpa hibernate-mapping

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

JPA实体映射,它基于另外两个实体映射关联

不确定这是否可行,但尝试WorkflowInstancePlayer player 根据两个其他实体映射WorkActionClass以及WorkflowInstance下面的实体映射哪些相关.

public class Action implements Serializable {
@Id
private Long action_id;

@ManyToOne
@JoinColumn(name = "work_action_class_id", referencedColumnName = "work_action_class_id")
private WorkActionClass workActionClass;

@ManyToOne
@JoinColumn(name = "workflow_instance_id", referencedColumnName = "workflow_instance_id")
private WorkflowInstance workflowInstance;

UPDATE: How can I map to a WorkflowInstancePlayer player?????
 @ManyToOne
 @JoinColumns( {
        @JoinColumn(name = "workflow_instance_id", referencedColumnName = "workflow_instance_id", insertable = false, updatable = false),
        @JoinColumn(name = "workActionClass.role_class_id", referencedColumnName = "role_class_id", insertable = false, updatable = false)
})
 private WorkflowInstancePlayer player;
Run Code Online (Sandbox Code Playgroud)


workflowInstancePlayer是基于workflow_instance_id …

java orm hibernate jpa hibernate-mapping

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

Hibernate CriteriaBuilder加入多个表

我正在尝试使用hibernate criteriabuilder加入4个表.
下面分别是表..`

@Entity
public class BuildDetails {
    @Id
    private long id;
    @Column
    private String buildNumber; 
    @Column
    private String buildDuration;
    @Column
    private String projectName;

}   

@Entity
public class CodeQualityDetails{
    @Id
    private long id;
    @Column
    private String codeHealth;
    @ManyToOne
    private BuildDetails build; //columnName=buildNum
}

@Entity
public class DeploymentDetails{
    @Id
    private Long id;
    @Column
    private String deployedEnv;
    @ManyToOne
    private BuildDetails build; //columnName=buildNum
}

@Entity
public class TestDetails{
    @Id
    private Long id;
    @Column
    private String testStatus;
    @ManyToOne
    private BuildDetails build; //columnName=buildNum
}
Run Code Online (Sandbox Code Playgroud)


在这4个表中,我想为MySQL执行以下sql脚本: …

java mysql hibernate hibernate-mapping hibernate-criteria

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

Hibernate中bag标签的用途是什么?

我需要知道如何使用bag标签,它的目的是什么?

java orm hibernate hibernate-mapping

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

使用JPA注释自动从子项中删除子项和父项

假设我们有3个Entities对象类:

class Parent {
    String name;
    List<Child> children;
}

class Child {
    String name;
    Parent parent;
}

class Toy {
    String name;
    Child child;
}
Run Code Online (Sandbox Code Playgroud)

如何使用JPA2.x(或hibernate)注释:

  1. 父删除时自动删除所有子项(一对多)
  2. 删除子项时从子项列表中自动删除子项(多对一)
  3. 儿童移除时自动删除玩具(一对一)

我正在使用Hibernate 4.3.5和mysql 5.1.30.

谢谢

java orm hibernate jpa hibernate-mapping

13
推荐指数
2
解决办法
4万
查看次数

如果存在类似的行,如何避免创建新行?

我需要配置hibernate以避免创建重复的行,(尽管该行存在它会创建一个新的行,并且因为只设置了一个字段,所以将所有其余字段设置为NULL)

可以说我有一排如下

id des    index age
1  MyName 2     23
Run Code Online (Sandbox Code Playgroud)

虽然我只是将MyName设置为des并且它已经存在于Name表中,但是hibernate会创建一个新行,如下所示

id des    index age
1  MyName 2     23
2  MyName Null  Null     << new row with null values will be created 
                            rather than updating the previous one
Run Code Online (Sandbox Code Playgroud)

当我想要sa.所以我在我的类中添加了以下注释,但是它越过了Entity和dynamicUpdate.

@org.hibernate.annotations.Entity(
  dynamicUpdate = true
)
Run Code Online (Sandbox Code Playgroud)

我也使用@DynamicUpdate过,虽然hibernate接受它但我仍然遇到同样的问题.

有没有其他方法可以做到这一点?我的hibernate版本如下

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.2.1.Final</version>
      <type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

*基于Ray的评论自爆,通过为子类的Id分配值,它可以正常工作,但如果我没有ID怎么样?我必须先做一个选择才能找到id吗?是否有任何方法强制hibernate基于child class rahter的值自动执行r而不是单独选择查找id?*

User.Java

....
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Table(name = "user") 
@DynamicUpdate
public class User implements Serializable {

  private int ID;
  private Name name;
  private …
Run Code Online (Sandbox Code Playgroud)

hibernate updates hibernate-mapping java-ee hibernate-annotations

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

Hibernate SQL查询结果映射/转换为对象/类/ Bean

1 2:select(table.*)/(all column)没问题

String sql = "select t_student.* from t_student";
//String sql = "select t_student.id,t_student.name,... from t_student"; //select all column
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);//or query.addEntity("alias", Student.class);
//query.list();[Student@..., Student@..., Student@...]
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //or other transformer
query.list(); //[{Student(or alias)=Student@...},{Student=Student@...}]
Run Code Online (Sandbox Code Playgroud)

3:选择一些列(不是全部),是错误

String sql = "select t_student.id,t_student.name.t_student.sex from t_student";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.list(); //Exception:invalid column/no column
Run Code Online (Sandbox Code Playgroud)

我希望"3"正常工作,并将结果映射到Student.class.
喜欢:学生[id =?,name =?,sex =?,(其他字段为null /默认)]
我不知道这个错误,请帮帮我!

java sql hibernate hibernate-mapping

12
推荐指数
2
解决办法
8万
查看次数

为什么@ManyToOne关系默认为JPA FetchType EAGER?

我在Hibernate源代码中注意到,ManyToOne映射的默认FetchType是EAGER.而OnetoMany映射的默认加载类型是Lazy.这背后的具体原因是什么?

java orm hibernate jpa hibernate-mapping

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