是否可以从2个可能的表中获取实体的字段?
例如:
@Entity
@Table(name = "TABLE_A")
public class A{
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
@Entity
@Table(name = "TABLE_B")
public class B{
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
@Entity
@Table(name = "TABLE_PARENT")
public class PARENT{
// This field needs to be fetched from A table or from B table!!! by some
// conditions
@OneToOne
@JoinColumn(name = "A_B_ID")
private A a;
}
父类中的字段需要根据某些条件从表a或表b中提取!
任何想法都将不胜感激!
澄清:如果父级实际上指向B实例,我不想获取B实例!表每类继承只在A的表中查找,因为我们在父类中指定了his字段的类型!?
你有其他想法吗?
一种解决方案是从公共类继承A
和B
,例如C
并在中引用
类。草稿可以是:C
父
@MappedSuperclass
public class AB {
@Id
private Integer id;
...
}
@Entity
public class A extends AB {
...
}
@Entity
public class B extends AB {
...
}
@Entity
public class Parent {
...
@Id
private Integer id;
@OneToOne
private AB ab;
}
留档2.2.4.1
您可以通过使用hibernate继承功能来实现这一点;这里有一个例子;http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/
JPQl是jpa中的新成员,我想查询两个实体中的所有字段,然后使用实体类getter访问数据。 错误 异常[EclipseLink-0](Eclipse持久性服务-2.5.0.v20130507-3faac2b): org.Eclipse.Persistence.exceptions。JPQLException<br>异常描述:语法错误解析[SELECT u(),f()FROM User u jo
问题内容: 我有的: 我有Hibernate实体,它包含许多非瞬态字段,包括集合。用户可以分别更新每个字段或一次更新某些字段。 多么大的挑战: 在处理程序中,我应该检查实体的哪个字段已更改: 出于安全性和通知原因,我想这样做。手段: 并非所有用户都可以修改所有字段 我应该在某些字段更改时以特定方式通知特定用户。 有什么问题: 我得到非常丑陋的代码。实际上,我遍历所有字段/集合和调用方法。 题:
问题内容: 我有一个实体- 。由描述。 Hibernate为每个实体创建一个表,因此当我调用时,我的数据总是保存到该表中。 现在,我需要另一个表来存储相同类型的数据,并且只需要将我的实体保存到该表中。 数据结构 (类似这样): 使用这个 : 和结果,我应该在和 中。 由于系统限制,我无法将这两个对象放在一个表中。(即使创建额外的字段也是个坏主意)。 我可以不进行子类化吗?使用Programmati
Hibernate为每个实体创建一个表,因此当我调用时,我的数据总是保存到这个表中。 现在,我需要另一个表来存储相同类型的数据,并且我只需要将我的实体保存到该表中。 数据结构(类似于以下内容): 由于系统的限制,我不能将这两个对象放在一个表中。(即使创建额外字段也是坏主意)。 我可以在不进行子类化的情况下这样做吗?使用programmaticaly hibernate配置?
AnsprechPartner Lieferant ansprechpartner.java lieferant.java 在我的AnsprechPartner.java中,我是这样做的: 在我的Lieferanten.java中,我是这样做的:
我写了原生sql查询,而不是使用hql和面对roblem 超出声明序数参数的位置。记住序数参数是基于1的!职位: 1 和DAO 我读了和hibernate使用0作为第一个索引。 堆栈跟踪 //更新 有趣的是,当我设置查询数值时 我明白了 但是在MySQL中我得到了成功的结果。 我如何决定这个问题?