我正在使用JPA,并有一个我想访问的视图。我在许多其他类中使用嵌入id的映射实体来访问具有类似要求的表。然而,在这里,每当包含id的视图中有空值时,整个对象都返回为null。当我查询时,有正确数量的实体返回,但它们为null。
以下是课程:
{
@Entity
@Table(name = "VW_PRODUCT")
public class VwProduct implements Serializable {
@EmbeddedId
private VwProductId id;
public VwProduct() {
}
}
{
@Embeddable
public class VwProductId implements java.io.Serializable {
@Column(name = "PROD_NAME", nullable=true)
private String prodName;
@Column(name = "PROD_CTGRY", nullable=true)
private String prodCtgry;
@Column(name = "PROD_SBCTGRY", nullable=true)
private String prodSbctgry;
}
我省略了getter、setter和hashcode等内容,但我认为我的问题很清楚;当视图的某些值为空时,如何访问该视图?非常感谢。
如果主键列为null,则对该列的搜索将始终不返回任何对象。
我知道有三种可能的解决方案,按复杂性/神奇性的顺序排列。(对于不使用只读视图的用户,请不要执行以下任何操作。您将用一把超大猎枪将脚打爆。)
最简单的答案是更改视图的定义,添加rowid或生成的序列号之类的内容,然后将其作为主键。
第二个答案是主键为@ID@ROWID String id;
,这既是实现特定的,也是Hibernate特定的。
最后一个更复杂的答案是,将所有三个字段映射到一个“NullableString”UserType
,并有一个nullSafeGet
,将null
映射到非null的对象,比如“”或其他对象。你会得到副本,但由于这是一个只读视图,你并不在乎。
在HBASE 0.98.4上使用Phoenix4.2版本(我知道是老版本)。
我们有一个例子,我们要查询出历史信息,我们希望使用QueryDSL而不是原始SQL。历史表中的数据包含原始记录的id(Hibernate ENVERs),如果发生删除,则删除实际记录,但ENVERs记录包含原始id。 我们面临的问题是,由于创建Q类的实体只引用外键,这将强制SQL中的联接。由于使用Hibernate,我们无法引用多个字段的列。 null
我有一个来自Firebase的使用隐式数据同步的对象列表,我想使用呈现它们的唯一id(用于url)以及其他数据属性。我可以让以这样一种方式返回,即我可以访问中的对象ID,就像的成员具有属性一样?如果没有,实现这一点的正确方法是什么?假设代码(不起作用): 控制器: 查看:
问题内容: 我有一个具有以下结构的数据库: 当我尝试创建EntityProperty类时 我得到以下异常: 我知道JPA实体必须具有主键,但是由于无法控制的原因,我无法更改数据库架构。是否可以创建将与这样的数据库模式一起工作的JPA(hibernate)实体? 问题答案: 我猜您有一个组合键,其中的外键是。如果是这样,则可以按如下所示进行映射:
我正在Codeigniter中创建API。在这个API中,我为用户提供了一个登录函数。如果登录成功,我将在CI会话中设置用户数据,并将会话返回给用户。 现在,用户可以使用该会话ID来验证他自己的所有其他请求,如添加/更新/删除。基本上,我希望当用户发送下一个请求时,我可以根据他的会话ID验证他的凭据。 客户请求代码: 上面是一个从客户端到服务器的登录请求示例。在服务器端,服务器验证客户端提供的凭据
我在里面使用了。我还将设置为false for 支持较低的API