当前位置: 首页 > 面试题库 >

Hibernate + PostgreSQL +网络地址类型(inet,cdir)

吕骞尧
2023-03-14
问题内容

我从Hibernate 4.2.7和PostgreSQL 9.3.1开始了我的示例项目,一切进展顺利。

目前,我想使用INET
PostgreSQL类型,
但无法使用Hibernate进行映射。

我收到此hibernate错误: 无法确定类型:inet,在表:DEVICE_IP_ADDRESS,用于列…

我使用 org.hibernate.dialect.PostgreSQLDialect 和hbm.xml配置文件。

我的hibernate映射文件:

<property name="ipAddress" type="inet">
     <column name="IP_ADDRESS" not-null="true" />
</property>

我问谷歌,但找不到任何可用的解决方案。你可以帮帮我吗?

谢谢!

编辑:如果我想使用“额外的”
postgresql类型和PostGIS类型,您认为我需要使用哪种类型的ORM实现?

还是我需要使用简单的JDBC?


问题答案:

最近,我在Hibernate 3和Postgres 9中遇到了类似的问题。由于hibernate没有为postgres中的String
Array提供到Java String []的内置映射,因此我最终实现了一个自定义映射类。您可以尝试执行以下步骤。

  1. 创建实现“ org.hibernate.usertype.UserType”的自定义类“ PgInet”(根据我的hibernate 3知识,此UserType类。不确定在Hibernate 4中是否已更改)。
  2. 下面的方法实现至关重要。

    • 等于
    • nullSafeGet
    • nullSafeSet
    • returnClass返回InetAddress.class;
    • sqlTypes返回新的int [] {java.sql.Types。}

完成上述操作后,我们只需要将HBM.xml中的属性类型设置为此类,即PgInet。

对于自定义类实现,请尝试参考现有的类型实现类。您应该能够找到类文件。使用下面的链接作为参考。

http://grepcode.com/file/repo1.maven.org/maven2/hibernate/hibernate/2.1.8/net/sf/hibernate/type/ArrayType.java

希望这可以帮助。

谢谢。



 类似资料:
  • 注意:v2 API差异:现有.proto地址结构。 Pipe SocketAddress SocketAddress.Protocol (Enum) BindConfig Address CidrRange Pipe Pipe proto { "path": "..." } path (string, REQUIRED) Unix域套接字路径。 SocketAddress SocketAdd

  • 因特网程序使用inet_aton、inet_addr(已废弃)和inet_ntoa函数实现IP地址和点分十进制串之间的转换。 函数原型 #include <arpa/inet.h> /*将一个点分十进制串转换位网络字节顺序的IP地址,字符串有效返回1,否则为0*/ int inet_aton(const char *cp,struct in_addr *inp); /*若字符串有效则返回32位二进

  • 问题内容: 给定CIDR地址,例如 如何确定面膜长度?() 如何确定掩码地址?() 如何确定网络地址?() 问题答案: 它由apache utils涵盖。 请参阅以下URL:http : //commons.apache.org/proper/commons- net/apidocs/org/apache/commons/net/util/SubnetUtils.html 注意:对于使用// 32

  • 函数名称:打开网络地址 函数功能:调用系统浏览器,打开一个指定网址 函数方法 app.openURL(url) 参数 类型 必填 说明 ur string 是 需要打开的应用网址 函数用例 --打开 Luabox 官网 app.openURL("https://www.touchsprite.com/luabox") 注意事项 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数

  • 我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。

  • 我的第一篇文章,所以请温柔一点;)我必须修改一些现有的专注于java.net.网络接口的软件。以前所有的接口都列在一个组合框中,用户必须选择一个。现在不仅可以选择接口,还可以选择这个接口附带的一个特定的ip地址。由于许多代码都是基于网络接口类的,我在想是否有可能通过将现有网络接口拆分为ip地址来“创建”一些新的网络接口。这可能吗?我知道,我不能创建一个新的网络接口。但是也许还有另一个选择,我现在看