- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个数据库实体,由条形码描述为其唯一 ID。为了更好地使用条形码,我添加了一个名为 Barcode 的类,其中包含 2 个值:- 条形码的值- 条形码的校验和因为我想将其紧凑地保存在数据库中,所以我添加了一个属性转换器,它将条形码转换为格式为(值+校验和)的字符串
@Entity
@Table
public class Game implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Getter
@Setter
@Convert(converter = BarcodeConverter.class)
private Barcode barcode;
@Column
@Getter
@Setter
private String title;
@Column
@Getter
@Setter
private String comment;
}
@Converter(autoApply=true)
public class BarcodeConverter implements AttributeConverter<Barcode, String> {
public String convertToDatabaseColumn(Barcode attribute) {
return attribute.getValue() + attribute.getChecksum();
}
public Barcode convertToEntityAttribute(String dbData) {
return new Barcode(dbData);
}
}
现在我不确定如何在我的应用程序中使用条形码/id 列:
1)是否可以使用以下方式获取 Game 对象:
entityManager.find(Game.class, new Barcode("012345", "7"));
2) 如何在 jpql 查询中使用条形码字段?我可以访问条形码对象的字段,还是可以隐式处理字符串?例如,如果我想通过校验和选择一些游戏,我可以这样写:
from Game g where g.barcode.checkum = 7
或
from Game g where g.barcode like "%7"
3) 使用转换器实现的关系是如何映射的?它们是通过转换器的字符串表示形式映射还是通过使用条形码对象的多个字段映射?
问候比罗
最佳答案
您需要在应用程序中使用 Barcode 对象。您的 JPA 实现(例如 Hibernate)将为每个数据库访问使用转换器来进行转换。
您可以在我的 github 存储库中找到一个示例:https://github.com/thjanssen/ColorConverter/blob/master/Converter/src/test/java/blog/thoughts/on/java/jpa21/TestColorConverter.java#L52
关于java - Id 列上的 TypeConverter 与 jpql 结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27061162/
似乎 TypeConverter.IsValid() 使用了当前的线程文化,但 TypeConverter.ConvertFrom() 没有。 这使得将 TypeConverter.IsValid()
我已将 Room 集成到我的项目中。在这个项目中,一些类在 Kotlin 中,一些在 Java 中。在我使用 Android Studio Ctrl+Alt+Shift+K 组合将我的 Java 文件
我在实现 Room 的类型转换器时出错。 error: Cannot figure out how to save this field into database. You can consider
这很烦人: 我想要这个: 所以我写了一个TypeConverter: public class PenConverter : TypeConverter {
我正在使用 4.0,我正在尝试通过开发一些用于类型转换的辅助方法来让我的生活更轻松。以下方法运行良好。它将从任何字符串转换为其他数据类型。 System.ComponentModel; public
我正在尝试向我的房间数据库中添加一个“图片”字段,其中包含一个名为 MyPicture 的自定义对象,该对象具有以下属性。 private String id; private User user;
我有一个简单的 TypeConverter将逗号分隔的字符串转换为 IEnumerable在调用我的 API 端点时缩短 url。 因此我有一个在客户端设置并传递给服务器的请求对象。所以,在服务器上它
为什么那些返回 true: TypeDescriptor.GetConverter(typeof(double)).CanConvertTo(typeof(double)); TypeDesc
我想创建一个 TypeConverter对于通用类,像这样: [TypeConverter(typeof(WrapperConverter))] public class Wrapper { p
我正在开发一个 IValueConverter 实现,它可以转换 bool? 值。为了通用性,我决定使用 TypeConverter 将输入值转换为 bool?。因为它的主要目的是用作 XAML 绑定
我正在尝试编写这样的标记扩展: [MarkupExtensionReturnType(typeof(Length))] public class LengthExtension : MarkupExt
我正在寻找一种将附加信息传递给 TypeConverter 的方法,以便在不创建自定义构造函数的情况下为转换提供一些上下文。 传递的额外信息将是包含我正在转换的属性的原始对象(在编译时称为接口(int
我目前正在学习 Room Persistence,我只想问一下如何为自定义类创建 TypeConverter? Brand.kt @Parcelize @Entity(tableName = "bra
在我看来,与 TypeConverter 相比,实现隐式运算符非常容易,因此我假设它们不等效,因为框架中普遍存在 TypeConverters(请参阅扩展 FrameworkElement 的任何内容
我有一个 PowerShell 类,我想自动从 string 转换它。 所以我这样定义了一个TypeConverter: class StringToAcmeStateConverter :
到目前为止,为了存储在房间数据库中,我一直在为每个类使用类型转换器。像这样: @SerializedName("sidebar") @Expose @TypeConverters(SidebarCon
我有一个具有以下属性的类: [TypeConverter(typeof(SomeNameEnumValueConvert))] public Example ExampleName { get; se
使用 CsvHelper,当我想要一个自定义解析器时(例如,我想要一个输入字符串为“f”的 MyBooleanConverter 将为 false,“t”将为是真实的”)。但是对于每个类我都必须编写映
我正在研究 XAML 中声明的泛型类型的初始化成员。这是针对 (reduced) generics support在 WPF 4 和 future 的 Silverlight 中。 (我已经在 VS2
我已按照有关如何为自定义类型添加 TypeConverter 的房间文档进行操作,但我的实体类仍然出现错误。我想简单地将 Category 枚举转换为 String,以便房间数据库了解如何存储它。下面
我是一名优秀的程序员,十分优秀!