Tag: hibernate mapping

一对一映射的概念。 解释映射

如何定义2个类之间One-to-One关系? 从概念上讲,我认为我在某个地方出错了。 我不知道是什么,但确实如此。 我们假设有两个名为Country和PM类: Country int c_id String name_c PM int c_id String name_pm 现在一个国家,只有一个PM,PM只能属于一个国家。 我如何在我的映射文件中执行此操作? 我在尝试这个: 但是这个有效映射除了在运行时产生exception之外name_pm也没做。它说在Country类中找不到属性name_pm ! 但它是否在Country类中搜索。 它应该在PM类内搜索。 还帮助我完成两个类之间的one-to-one映射。 我已经尝试了一段时间了。 Java代码: 国家 public class Country { private int c_id; private String name_c; public int getC_id() { return c_id; } public void setC_id(int c_id) { this.c_id = c_id; } public String getName_c() { […]

如何在Hibernate中映射BigDecimal,以便恢复我放入的相同比例?

在Java中, new BigDecimal(“1.0”) != new BigDecimal(“1.00”)即规模很重要 。 但是,对于Hibernate / SQL Server来说,这显然不是这样。 如果我将BigDecimal上的比例设置为特定值,通过Hibernate将BigDecimal保存到数据库然后重新膨胀我的对象,我会返回一个具有不同比例的BigDecimal。 例如,值1.00将返回1.000000,我假设因为我们将BigDecimals映射到定义为NUMERIC(19,6)的列。 我不能只将列定义为所需的比例,因为我需要将Dollar和Yen值(例如)存储在同一列中。 为了外部报告工具的利益,我们需要将BigDecimals表示为数据库中的数字类型。 是否存在一个“正确”映射BigDecimal的Hibernate UserType,或者我是否必须自己编写?

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@…}] 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 […]

org.hibernate.loader.MultipleBagFetchException:无法同时获取多个行李

以下是我的代码在这里,我使用多个列表从数据库中获取数据。 从hql查询中获取数据时,它显示exception。 Pojo类 public class BillDetails implements java.io.Serializable { private Long billNo; // other fields @LazyCollection(LazyCollectionOption.FALSE) private List billPaidDetailses = new ArrayList(); private Set productReplacements = new HashSet(0); @LazyCollection(LazyCollectionOption.FALSE) private List billProductList = new ArrayList(); //getter and setter } hmb.xml文件 Hql查询 String hql = “select distinct bd,sum(bpds.amount) from BillDetails as bd ” + “left join […]

Hibernate抛出奇怪的错误:未映射类

这是错误 org.hibernate.hql.ast.QuerySyntaxException: Payment is not mapped [select p from Payment p] 我不明白为什么会抛出这个错误,应该映射类,因为我会简要地向您展示。 我有一个非常基本的配置,如下所示: http : //docs.jboss.org/hibernate/annotations/3.5/reference/en/html/ch01.html 我试图将映射定义添加到hibernate.cfg.xml中,我也尝试以编程方式添加它。 他们都没有工作。 谁能告诉我在这里我错过了什么? (这不是我第一次组建一个Hibernate项目) 这是hibernate.cfg.xml org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/paymentsdatabase xxx xxx true thread create <!– –> 数据库连接工作正常,我已经测试过了 这是我的HibernateUtil中的静态初始化程序 static { try { // Create the SessionFactory from standard (hibernate.cfg.xml) // config file. sessionFactory = new AnnotationConfiguration() .addPackage(“com.lsyh.swati.zk.model”) .addAnnotatedClass(Payment.class) .configure().buildSessionFactory(); } […]

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; } 当持久化对象时,我得到一个SQLGrammarException: column “item_uuid” is of type uuid but expression is of type bytea at character 149 PostgreSQL版本是8.4.4 JDBC驱动程序 – 8.4.4-702(也试过9.0 – 同样的事情) Hibernate版本是3.6,主要配置属性: org.hibernate.dialect.PostgreSQLDialect org.postgresql.Driver jdbc:postgresql://192.168.1.1/db_test

Hibernate使用PostgreSQL序列不会影响序列表

我已将Hibernate配置为使用PostgreSQL序列(通过注释)为主键id列生成值,如下所示: @Id @SequenceGenerator(name=”pk_sequence”,sequenceName=”entity_id_seq”) @GeneratedValue(strategy=GenerationType.SEQUENCE,generator=”pk_sequence”) @Column(name=”id”, unique=true, nullable=false) public int getId() { return this.id; } 我在这个配置中看到的是,hibernate已经在持久化时分配了id值> 3000,而对使用过的序列的查询显示如下: database=# select last_value from entity_id_seq; last_value ———— 69 (1排) 问题: 有什么不对吗? hibernate应该与序列表同步吗? 如果没有,它在哪里存储最后生成的ID? 谢谢。