在本文中,我们将给您介绍关于本机SQL抛出无效的列名异常的详细内容,并且为您解答sql抛出异常的相关问题,此外,我们还将为您提供关于asp.net-mvc–实体框架4.3无效的列名称“CreatedO
在本文中,我们将给您介绍关于本机SQL抛出无效的列名异常的详细内容,并且为您解答sql 抛出异常的相关问题,此外,我们还将为您提供关于asp.net-mvc – 实体框架4.3 无效的列名称“CreatedOn”、BulkOperations upsert抛出无效的BSON字段名称、c# – 无法分配新套接字,抛出无效参数异常、C++ 匿名异常:解析无名异常的生成和处理的知识。
本文目录一览:- 本机SQL抛出无效的列名异常(sql 抛出异常)
- asp.net-mvc – 实体框架4.3 无效的列名称“CreatedOn”
- BulkOperations upsert抛出无效的BSON字段名称
- c# – 无法分配新套接字,抛出无效参数异常
- C++ 匿名异常:解析无名异常的生成和处理
本机SQL抛出无效的列名异常(sql 抛出异常)
我正在为我的应用程序使用Hibernate 3.2.5。
我有一张Dept
桌子和一张Employees
桌子。
部门java
private int deptId;
private String deptName;
private Map empMap = new HashMap();
//Getters and Setters
员工.java
private int empId;
private String empName;
private int deptId;
private int age;
private String sex;
private Dept dept;
HBM映射文件
<class name="com.jdbc.Dept" table="dept">
<id name="deptId" type="integer" column="DEPT_ID">
<generator></generator>
</id>
<property name="deptName">
<column name="DEPT_NAME"></column>
</property>
<map name="empMap" inverse="false" cascade="all" lazy="true">
<key column="DEPT_ID"></key>
<map-key formula="EMP_ID" type="integer"></map-key>
<one-to-many/>
</map>
以下是本机SQL的代码:
SQLQuery query = session.createSQLQuery("Select d.DEPT_ID,e.EMP_NAME from Dept d,Emp e where d.DEPT_ID = e.DEPT_ID")
.addEntity(Dept.class);
List<Dept> departments = query.list();
for(Dept depart :departments)
System.out.println(depart.getDeptName());
我得到了例外:
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at com.jdbc.HibernateStartup.main(HibernateStartup.java:75)
Caused by: java.sql.SQLException: Invalid column name
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3295)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1913)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1514)
at org.hibernate.type.StringType.get(StringType.java:18)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2096)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1380)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)
at org.hibernate.loader.Loader.getRow(Loader.java:1206)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
... 7 more
当我直接在数据库中运行查询时,我会得到正确的输出,但是在hibernate状态下,它给出的是Invalid COlumn name
。我已经确认列名仅是正确的。
请让我知道如何解决此问题。
asp.net-mvc – 实体框架4.3 无效的列名称“CreatedOn”
Invalid column name ‘CreatedOn’.
没有DB或代码更改 – 我只是添加了一些缩进的可读性。 TFS以前的应用程序版本也抛出相同的异常。
我的实体中没有CreatedOn属性,在数据库中没有这样的字段,我不需要它,并且不希望它在任何情况下。
应该做什么来避免这个例外?
这是我用于访问数据的自定义数据库上下文:
public class MyContext<T> : DbContext where T : class,IDataEntity { public MyContext(string connectionKey) : base("name=" + connectionKey) { Configuration.AutoDetectChangesEnabled = false; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Label>().Property(item => item.Id).HasColumnName("LabelId"); modelBuilder.Entity<Label>().Ignore(item => item.ChangedBy); } }
这是Label类
public class BaseEntity : IDataEntity { public int Id { get; set; } public string Name { get; set; } public string ChangedBy { get; set; } } public class Label : BaseEntity { }
解决方法
BulkOperations upsert抛出无效的BSON字段名称
在查看了库的源代码和测试之后,我设法解决了我的问题。 BulkOperationsIntegrationTest
public void upsertAll(final List<StringEntry> strings) {
FindAndReplaceOptions options = FindAndReplaceOptions.options();
BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED,StringEntry.class,DOCUMENT);
List<Pair<Query,Update>> operations = new ArrayList<>();
for(StringEntry string: strings) {
Query query = new Query();
query.addCriteria(Criteria.where("msgid").is(string.getMsgId()));
Document doc = new Document();
mongoTemplate.getConverter().write(string,doc);
bulkOps = bulkOps.replaceOne(query,doc,options.upsert());
}
bulkOps.execute();
}
似乎upsert
函数实际上并未按预期工作。将其替换为replaceOne
可行。
c# – 无法分配新套接字,抛出无效参数异常
Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
它引发了一个例外:
An unhandled exception of type system.net.sockets.socket exception
occurred in System32.DLLAdditional information: An invalid argument was supplied
它还会写出这些代码:0x80004005,ErrorCode:10022
解决方法
我遇到了几个网络/套接字示例和每次搜索(参数组合不匹配?/断开而不是关闭/可选设置以重用地址或套接字)的相同问题没有解决它.此“无效参数”错误消息具有误导性.现在,我想出来了:
最有可能的是,您还在Visual Studio或Executable(exe)中直接在网络卷或共享上运行代码.即使以管理员身份执行也无效.
当我将可执行文件/代码项目复制到我的PC上的本地卷时,所有套接字程序都运行良好(即使没有管理员权限).
可能更改用户帐户控制(UAC)权限或公司域组策略可以避免此问题.
问候缩略词.
C++ 匿名异常:解析无名异常的生成和处理
在
C++ 匿名异常:解析无名异常的生成和处理
在 C++ 中,匿名异常是一种不指定异常类型的异常,它通常由
生成匿名异常
立即学习“C++免费学习笔记(深入)”;
匿名异常可以通过多种方式生成,最常见的是通过抛出 std::exception 对象:
throw std::exception(); // 生成一个匿名异常
还可以通过使用 throw() 关键字来生成匿名异常:
throw(); // 生成一个匿名异常
处理匿名异常
处理匿名异常与处理已命名异常类似。您可以使用 try-catch 块来捕获匿名异常:
try { // 可能抛出匿名异常的代码 } catch (...) { // 处理匿名异常 }
在 catch (...) 块中,可以访问异常的 what() 成员函数以获取有关异常的附加信息:
try { // 可能抛出匿名异常的代码 } catch (...) { std::cout << "匿名异常:" << e.what() << std::endl; }
实战案例
考虑以下代码片段,它使用 std::vector::at() 方法访问不存在的元素,该方法可能会抛出一个 std::out_of_range 异常作为匿名异常:
std::vector<int> vec = {1, 2, 3}; try { int value = vec.at(4); // 可能抛出一个匿名异常 std::cout << "值:" << value << std::endl; } catch (...) { std::cout << "匿名异常:索引超出范围" << std::endl; }
运行此代码将输出以下内容:
匿名异常:索引超出范围
最佳实践
- 尽量不要抛出匿名异常,因为它们可能会 затруднить 调试。
- 在处理匿名异常时,应始终打印异常的 what() 消息,以便 进行调试。
- 对于可避免的错误,应使用命名的异常类型来提供更有意义的信息。
以上就是C++ 匿名异常:解析无名异常的生成和处理的详细内容,更多请关注php中文网其它相关文章!
关于本机SQL抛出无效的列名异常和sql 抛出异常的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于asp.net-mvc – 实体框架4.3 无效的列名称“CreatedOn”、BulkOperations upsert抛出无效的BSON字段名称、c# – 无法分配新套接字,抛出无效参数异常、C++ 匿名异常:解析无名异常的生成和处理的相关信息,请在本站寻找。
本文标签: