No default constructor for entity解决

org.hibernate.InstantiationException: No default constructor for entity: com.tks.skyproject.model.ImplementLogAttach



错误分析:构造函数出了问题 到类里一看 默认构造函数被删了

错误解决:

到类里写上:

// 构造无参构造方法
public AbstractUser() {

}

就可以啦。。。

展开阅读全文

关于default constructor

11-22

<>中2.1节这样提到:rn "如果一个 class 没有任何 constructor , 但它内含一个 member object, 而后者有 default constructor , 那么这个 class 的 implicit default constructor 就是 "nontrivial" , 编译器需要为些 class 合成出一个 default constructor"rnrn1. 后者的 default constructor, 如果没有被显式声明, 而是被隐式产生的"trivial"或"nontrivial"的, 算不算?rnrn2. 如果算, 那 class 应该合成一个default constructor, 并且合成的 default constructor 应该调用后者的隐式产生的default constructor, 这时当后者的隐式产生的 default constructor 是 "trivial" 的(并没有被编译器合成), 不会发生链接错误? 如果不算, 那编译器没有责任为这个class合成出一个default constructor, 而是会隐式声明一个 "trivial" 的 default constructor, 此时如果后者的default constructor是编译器合成的 "nontrivial" 的, 但前者的 "trivial default constructor" 并不会调用它, 又违反了后者必须被调用的规则.rnrn3. 从第2个问题看来, 比较合理的应该是算, 只是或许编译器应该区分后者的隐式产生的 default constructor 到底是 "trivial" 或 "nontrivial" , 因此产生一个新的问题, 编译器是如何区分这一点的? 或者编译根本不区分它们, 无论"trivial"或"nontrivial" 都一并调用, 但若是"trivial", 后者的 default constructor 根本不会被合成, 编译又是如何处理这一调用的?rnrn以上问题困扰我多时了, 望大牛们给个解答! 论坛

求大神解决 no appropriate default constructor available

05-07

多线程安全队列:rn#include rn#include rn#includern#include rn#includern#includern#define random(x) (rand() % x) rn#define cr 1 //1标识为插入 rn#define sc 0 //0标识为删除rnrnvolatile int readcount=0; //读者数目rnrnconst int qarea=10000; //队列大小随机数rn rnconst int sum=1000; //线程运行总次数 rnrnconst int sarea=500;//元素范围随机数rnrnint th=0; //初始化当前线程总数 rnint th_cz=1; //初始化当前查找线程总数 rnint th_cr=1; //初始化当前插入线程总数 rnint th_sc=1; //初始化当前删除线程总数rnrnHANDLE hMutex;//控制读者数量readcount的互斥访问量 rnrnHANDLE rMutex;//控制读写互斥,写写互斥的信号量rntypedef struct nodernrn int data;rn struct node* next;rnrnnode,*QNode;rnrntypedef structrnrn QNode front;rn QNode rear;rn int Length;rnrnLinkQueue;rnrnrnrnstruct Readargrnrn rnrn LinkQueue &Queue; //定义队列rn int e; //定义查找元素rn rn rn;rn//定义写者传参结构体rnrnrnstruct Writeargrnrn LinkQueue &Queue; //定义队列rn int n;rn int e; //定义插入元素rn int Flag; //定义传入标示符(cr执行插入操作,sc执行删除操作)rnrn;rnrnrnrnvoid InitQueue(LinkQueue &Q);rnvoid EnQueue(LinkQueue &Q,int e);rnvoid DeQueue(LinkQueue &Q,int &e);rnvoid Clear(LinkQueue &Q);rnQNode Find(LinkQueue &Q,int e) ;rnvoid Print(LinkQueue &Q);rnunsigned __stdcall ReaderThread(void *arg); //读者线程(查找) rnunsigned __stdcall WriterThread(void *arg); //写者线程(包括插入和删除)rnrnrnvoid InitQueue(LinkQueue &Q)rnrn int e,c,i;rn QNode p;rn Q.front=Q.rear=(QNode)malloc(sizeof(node));rn if(!Q.front)rn rn printf("存储分配失败!\n");rn exit(0);rn rn Q.front->next=NULL;rn Q.Length=0;rn printf("队列初始化完毕!\n");rnrnrn srand((unsigned int)time(NULL));rn c=random(qarea);rn rn if(!c)rn printf("队列创建失败!\n");rn exit(0);// 异常处理,如果用户未输入结点个数则跳出该段代码。rn rn elsern p=(QNode)malloc(sizeof(node)); //p动态分配存储空间rn if(!p)rn printf("结点p动态分配内存失败!\n");rn exit(0); //异常处理,如果节点p动态分配内存失败则跳出该段代码。rn rn rn e=random(sarea);//变量e取范围0~searea内的随机整数rn p->data=e;rn p->next=NULL;rn Q.rear->next=p;rn Q.rear=p;rn if(Q.front->next==NULL) rn Q.front->next=p; rn Q.Length++; rn rn for(i=1;idata=e;rn p->next=NULL;rn Q.rear->next=p;rn Q.rear=p;rn if(Q.front->next==NULL) rn Q.front->next=p; rn Q.Length++; rn rn rnrnrnrnvoid EnQueue(LinkQueue &Q,int e)rn rn node *p=new node;rn srand((unsigned int)time(NULL));rn p=(QNode)malloc(sizeof(node));rn if(!p)rn rn printf("存储分配失败!\n");rn exit(0);rnrn rn e=random(sarea);rn printf("插入队列元素: %d",e );rn printf("\n");rn p->data=e;rn p->next=NULL;rn Q.rear->next=p;rn Q.rear=p;rn if(Q.front->next==NULL) rn Q.front->next=p; rn printf("插入成功!\n ");rn Q.Length++; rn rnrnrnrnrnvoid DeQueue(LinkQueue &Q,int &e)rnrn QNode p;rnrn if(Q.front==Q.rear)rn printf("队列为空!");rn p=Q.front->next;rn e=p->data;rn Q.front->next=p->next;rn if(Q.rear==p)rn Q.rear=Q.front;rn free(p);rn Q.Length--; rn printf("删除成功!\n");rnrn rnrnrnvoid Clear(LinkQueue &Q)rnrn QNode p,q; rn Q.rear=Q.front; rn p=Q.front->next; rn Q.front->next=NULL;//只留下头结点 rn while(p) rn rn q=p; rn p=p->next; rn free(q); rn rn printf("清空成功!");rnrnrnQNode Find(LinkQueue &Q,int e)rnrn QNode p; rn p=Q.front->next;rn if(Q.front==Q.rear)rn printf("队列为空!找不到该元素!");rn elsern rn rn rn while(p->data!=e&&p->next!=NULL)rn rn rn p = p->next;rn rn if(p->data==e)rn rn printf("元素%d已找到!\n",e);rn return p;rn rn rn elsern rn printf("元素%d未找到!\n",e);rn rn rn rnrn rnvoid Print(LinkQueue &Q)rnrn rn QNode p;rn p=Q.front->next;rn if(Q.front==Q.rear)rn printf("队列为空!");rn elsern rn int k; rn while(p!=NULL)rn rn rn printf("%d ",p->data);rn rn p=p->next;rn rn rn rn printf("长度为:%d",Q.Length);rnrnrnrn//读者线程(查找)rnunsigned __stdcall ReaderThread(void *arg)rn Readarg *RA;rn RA=(Readarg*)arg;rnrn int e;rnrn WaitForSingleObject(hMutex,-1);//等待互斥量信号rn readcount++;rn if(readcount==1)rn WaitForSingleObject(rMutex,INFINITE);//等待信号量信号rn rn ReleaseMutex(hMutex);//释放互斥量信号rn e=RA->e;rn printf("查找操作:读者%d开始查找%d\n",th_cz,e);rn Find(RA->Queue,e);rn th_cz++; //执行完一遍查找读者数加1rn rn WaitForSingleObject(hMutex,-1);rn readcount--;rn if(readcount==0)rn ReleaseSemaphore(rMutex,1,NULL);//释放信号量信号rn rn ReleaseMutex(hMutex);rn return 0;rnrnrn//写者线程(包括插入和删除)rnunsigned __stdcall WriterThread(void *arg)rn Writearg *WA;rn WA=(Writearg*)arg;rnrn int f,e,n;rn f=WA->Flag;rn n=WA->n;rn e=WA->e;rnrn if(f)rn WaitForSingleObject(rMutex,INFINITE);rn printf("插入操作:写者%d开始在队尾插入元素%d\n",th_cr,e);rn EnQueue(WA->Queue,e);rn th_cr++;//执行完一遍插入写者数加1rn Print(WA->Queue);rn ReleaseSemaphore(rMutex,1,NULL);rn elsern WaitForSingleObject(rMutex,INFINITE);rn printf("删除操作:写者%d开始删除头结点\n",th_sc);rn DeQueue(WA->Queue,n);rn th_sc++;//执行完一遍删除写者数加1rn Print(WA->Queue);rn ReleaseSemaphore(rMutex,1,NULL);rn rn return 0;rnrnrnrnrnint main()rnrn char sr;rn printf("**************************\n");rn printf(" 1.读者优先\n");rn printf(" 2.退出窗口\n");rn printf("**************************\n");rn printf("请输入你的选择(1或者2):");rn dorn sr=(char)getchar();rn while(sr!='1'&&sr!='2');rn //system("cls");rn if(sr=='2')rn return 0;rn elsernrn HANDLE hThread[sum];rn unsigned threadID[sum];rnrn int i,j,m;rnrn LinkQueue Q;rn rn InitQueue(Q);rn Print(Q);rn rn hMutex=CreateMutex(NULL,FALSE,NULL); //创建互斥量hMutexrn rMutex=CreateSemaphore(NULL,1,1,NULL); //创建信号量rMutexrnrn srand((unsigned int)time(NULL));rn for(i=0;i 论坛

没有更多推荐了,返回首页